In der Vergangenheit habe ich schon im Artikel „WordPress Plugins bereichern“ erläutert, wie man Plugins um einige nützliche Funktionen erweitert und so die Nutzung optimiert. Dabei gib es unter anderem um den Absprung mit Hilfe eines einfachen Links zur Options-Seite des Plugins.
Mit WordPress 2.8 wird die Plugin-Seite ein wenig verändert sein und so gibt es einen Hook, den man bequem mit dem Link befüllen kann und den Komfort ein wenig erhöht.
Die Möglichkeit, die hier im Tutorial erklärt wird, klappt erst ab Version 2.8 von WordPress, in der Version 2.7 musste das anders geschehen, dazu dient der schon erwähnte Artikel „WordPress Plugins bereichern“ oder ohne große Erklärung der folgende Schnipsel.
/**
* @version WP 2.7
* Add action link(s) to plugins page
*/
function set_plugin_meta27($links) {
$plugin = plugin_basename(__FILE__);
$settings_link = sprintf( '<a href="options-general.php?page=%s">%s</a>', $plugin, __('Settings') );
array_unshift( $links, $settings_link );
return $links;
}
add_filter( 'plugin_action_links_' . $plugin, 'set_plugin_meta27' );
Ab Version 2.8 sieht das Backend leicht verändert aus und so werden auch die Meta Links zu Plugins anders präsentiert. Dazu gibt es aber einen Hook, so dass man den Inhalt zu den Plugins und die Links zum Plugin selbst erweitern kann. Der folgende Screenshot sollte das verdeutlichen.

Um nun den Link zur Options-Site zu setzen, dient der folgenden Code, der die URL des Links aus den Plugin-Daten nutzt und der Begriff „Settings“ muss in dem Fall nicht für die Mehrsprachigkeit erweitert werden, da er im Sprachpaket von WordPress dabei ist und somit automatisch beim Umstellen des Backend auf eine neue Sprache übersetzt wird.
function set_plugin_meta($links, $file) {
$plugin = plugin_basename(__FILE__);
// create link
if ($file == $plugin) {
return array_merge(
$links,
array( sprintf( '<a href="options-general.php?page=%s">%s</a>', $plugin, __('Settings') ) )
);
}
return $links;
}
add_filter( 'plugin_row_meta', 'set_plugin_meta', 10, 2 );
Alternativ kann folgenden Funktion aufgerufen werden, die den Link vor die Links von WP setzt, was ich für übersichtlicher halte. Die Funktion wird im Anschluss je nach Version von WordPress aufgerufen, dabei kann die Funktion für 2.7 und 2.8 genutzt werden; ich hooke lediglich bei 2.8 nochmal, so dass der Link auch im rechten Bereich vorhanden ist.
// plugin definitions
define( 'FB_BASENAME', plugin_basename( __FILE__ ) );
define( 'FB_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
define( 'FB_FILENAME', str_replace( FB_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) );
function filter_plugin_meta($links, $file) {
/* create link */
if ( $file == FB_BASENAME ) {
array_unshift(
$links,
sprintf( '<a href="options-general.php?page=%s">%s</a>', FB_FILENAME, __('Settings') )
);
}
return $links;
}
global $wp_version;
if ( version_compare( $wp_version, '2.8alpha', '>' ) )
add_filter( 'plugin_row_meta', 'filter_plugin_meta', 10, 2 ); // only 2.8 and higher
add_filter( 'plugin_action_links', 'filter_plugin_meta', 10, 2 );
Diese kleine Erweiterung im Plugin macht nicht viel Mühe und stellt aus meiner Sicht trotzdem einen Mehrwert dar, der es dem Nutzer einfach macht, die Options-Seite zum Plugin aufzusuchen. Schade nur, dass die Entwickler von WordPress jedesmal diesen Hook ändern und man nun schon fast zu jeder neuen Version von WordPress eine eigene Funktion benötigt um diesen kleinen Mehrwert zu setzen.
Frank, scheinbar interessiert sich keiner für die Methode. Naja
In einem engl. Blog habe ich gerade einen Artikel gelesen, heute veröffentlicht, wie man es mit der alten Methode macht. Das kommt schon. So viele Entwickler gibt es scheinbar nicht, die diesen kleinen Mehrwert nutzen wollen und schon in 2.8 denken. Danke dir nochmal für den Tipp, denn von dir ist ja quasi der Kern, ich habe es nur umschrieben. Bei mir liegt so viel auf Halde mit 2.8, was ich zum Teil nur im Buch habe, dass ich nicht nachkomme.
Halo Frank schön wieder von dir zu lesen.
Ich freue mich schon auf die neue WP Version, doch habe ich auch ein wenig Angst, da ich meinen Blog so umgebaut habe und halt nicht sehr viel davon verstehe.
Deswegen umso mehr freude dann deine Tipps weiter verfolgen zu können.
Viele grüße
Thomas
@Thomas: Welche Version fährst du und hast du am Core geändert?
Hallo Frank,
ich habe WP2.7.1 und nur das Design geändert. Also Sitebar neu mit der 250er Fläche oben z.B. sonst soweit nur am CSS und hier und da Kleinigkeiten. Da es mein erster selbstgebauter Blog ist, zwar am Anfang mit der Artisteergrundlage, ist davon nicht mehr viel übrig geblieben. Ich habe soviel geändert und weiß nicht mehr was alles.
@Thomas: insofern du nur am Frontend gebaut hast, ist das kein Problem und das Update auf 2.8 sollte ohne Probleme laufen. Die meisten Plugins werden ebenso wenig etwas einbüßen und sollten laufen.
Super vielen dank, ich habe sonst meist mit dem Update immer ein wenig gewartet. Doch es gibt mir zusätzliche Sicherheit wenn du es schreibst. Ja Frank um dir zuvor zukommen ich mache erst ein Backup
Danke für deine Hilfe und ermunternden Worte
Thomas
Frank, was mich wirklich ein wenig stört, ist die Tatsache, dass selbst Plugins aus dem Hause Automattic keine Vorzeigeobjekte sind. Eigentlich müsste es ein Standard-Plugin gegeben, wo solche Möglichkeiten implementiert und aufgezeigt sind, damit Entwickler diese Option wahrnehmen und nicht den Core danach absuchen müssen. Wie das Defaupt-Thema halt
@Sergej: In der Mailingslist der wp-hacker wurde das schon mehrfach diskutiert, ohne erfolg. Noch immer sieht man "Hello Dolly" für diese Aufgabe. Nur leider ist in diesem Plugin verdammt wenig an Beispielen drin, ist mehr Syntax für Literaturaspiranten. Eine Lösung sehe ich aber nicht, es bleibt Aufgabe der Blogs mit dem Thema WordPress.
Hallo Frank,
ich möchte für mein Plugin um die oben beschriebene Funktion erweitern, leider tut es nicht so wie es soll:
// Add settings link on plugin pageadd_filter('plugin_action_links', 'myplugin_settings_link', 10, 2);
function myplugin_settings_link($links, $file) {
static $this_plugin;
if (!$this_plugin) {
$this_plugin = plugin_basename(__FILE__);
}
if ($file == $this_plugin) {
// The "page" query string value must be equal to the slug
// of the Settings admin page we defined earlier, which in
// this case equals "myplugin-settings".
$settings_link = 'Settings';
array_unshift($links, $settings_link);
}
return $links;
}
Ich habe die aktuelle WP Version drauf. Im Backend unter Plugins wird einfach überhaupt nichts angezeigt. Hast du eine Idee?
Viele Grüße
@Florian: habe ich so gut wie allen Plugins von mir drin, kannst also damit mal abgleichen und den Fehler suchen. Schaue mal hier direkt im Source.
Nachdem der Google+ Button nun verfügbar ist, kam ich auf die Idee diesen in mein Plugin zu integrieren.
Dabei habe ich mich an diesem tollen Tutorial hier orientiert. Vielen Dank! Klappt super. Falls jemand wissen möchte, wie genau das mit dem Google Plus Button geht, kann man es hier nachlesen.
http://software.bmo-design.de/how-to-integrate-google-plus-into-your-wordpress-plugin
Vielen Dank und weiter so!
Grüße Benedikt