In diesem Gastartikel beschreibt Stefan Wienströer von SteviesWebsite Blog die Erstellung eines einfachen Plugins für WordPress. Auf seinem Blog schreibt er über viele Programmierthemen.
Oft kann es ganz hilfreich sein, sich seine eigenen Plugins für den WordPress Adminbereich zu schreiben. Denn jeder Blog ist anders und es gibt wahrscheinlich kein Plugin, was perfekt für jeden ist.
Ich möchte euch heute eine kleine Starthilfe geben und vielleicht entscheidet ihr euch ja dazu, selbst mal ein Plugin zu entwickeln.
Für das Entwickeln von Plugins sollte man allerdings Grundkenntnisse in PHP besitzen. Wer diese noch nicht hat, sollte sich am besten ein entsprechendes Buch dafür besorgen.
Das Beispiel
Wir erstellen heute ein Plugin, mit welchem man seine Profile bei Blogverzeichnissen anzeigen lassen kann.
Es ist sehr simpel aufgebaut, damit man schnell verstehen kann, wie man anfängt.
Basisdaten
Wenn ihr mal in die WordPress Plugin-Verwaltung schaut, werdet ihr sehen, dass jedes Plugin folgende Eigenschaften hat:
- Name
- Plugin Url
- Beschreibung
- Autor
- Version
- Autoren Url
Diese Daten stehen im PHP-Kommentar in der jeweiligen Basisdatei des Plugins. Für unser Profil-Plugin sieht das dann zum Beispiel so aus:
<?php /* Plugin Name: Profile Plugin URI: http://blog.stevieswebsite.de Description: Dieses Plugin zeigt die Profile für Blogverzeichnisse an. Author: SteviesWebsite Version: 1.0 Author URI: http://blog.stevieswebsite.de ?>
Der Code muss dann dort gespeichert werden:
/wp-content/plugins/{pluginname}/{pluginname}.php
In unseren Fall ist das dann der folgende Dateiname:
/wp-content/plugins/profile/profile.php
Wenn das ganze jetzt hochgeladen ist, kann man die Beschreibung bei den Plugins sehen.



Dafür muss man auf Plugins->Verwalten->Inaktive gehen. Hier wird dann auch unser Plugin angezeigt:
Nach der Aktivierung des Plugins werdet ihr noch nicht viel sehen können, weil wir ja schließlich auch noch nicht wirklich etwas erstellt habe. Das wird sich jetzt ändern.
Im nächsten Schritt werden wir folgendes Menü erstellen:
Admin Menü registrieren
In WordPress muss man sein Admin-Menü registrieren. Das Erstellen der Menüeinträge erfolgt in einer eigenen Funktion. Diese wird mit add_action registriert und das Funktioniert so:
add_action('admin_menu', 'profileAddMenu');
Nun wird beim Aufbau des Admin-Menüs die Funktion profileAddMenu aufgerufen, welche wir jetzt erstellen:
function profileAddMenu() { add_menu_page('Profile', 'Profile', 10, __FILE__, 'profile'); add_submenu_page(__FILE__, 'Bloggerei', 'Bloggerei', 10, 'bloggerei', 'bloggerei'); add_submenu_page(__FILE__, 'Blogoscoop', 'Blogoscoop', 10, 'blogoscoop', 'blogoscoop'); add_submenu_page(__FILE__, 'Top Blogs', 'Top Blogs', 10, 'topblogs', 'topblogs'); }
Und zwar wird hier mit add_menu_page der Eintrag im Hauptmenü erstellt. Dieser ist später immer zu sehen. Die Funktion hat die folgenden Parameter:
- Seitentitel: Dieser Seitentitel wird später im <title>-Element beim Aufruf der Seite eingefügt.
- Menütext: Das ist der Text, der im Menü angezeigt wird.
- Zugriffslevel: Das Menü wird nur angezeigt, wenn der Benutzer einen bestimmten Rang hat. In unseren Fall ist es 10 für den Admin. Weitere Ränge kann man hier nachlesen..
- Datei: Die Datei, in der die Funktion ist, welche den Inhalt ausgibt. __FILE__ heißt, dass die Datei sich in der selben Datei befindet.
- Funktion: Der Name der Funktion die aufgerufen werden soll.
- Icon: Hier kann man die Icon-Url angeben. Wird sie weggelassen, wird ein Zahnrad angezeigt.
Untermenüs erstellen
Bei den Untermenüs könnt ihr eure Profile auflisten. Ich hab jetzt mal Bloggerei, Blogoscoop und Top Blogs genommen.
Die Funktion add_submenu_page hat dabei folgende Parameter. Ich hab jetzt mal nur eine Beschreibung erstellt, wenn die Beschreibung anders ist als bei add_menu_page:
- Parent: Dort muss die Hauptdatei des Admin-Plugins angegeben werden. In diesem Fall ist das die gleiche Datei, also können wir hier __FILE__ nehmen.
- Seitentitel
- Menütext
- Zugriffslevel
- Datei
- Funktion
Jetzt haben wir es auch schon fast geschafft. Wir müssen nur noch die Funktionenn erstellen, die den Inhalt ausgeben. Hier kann einfach mit echo oder Ähnlichen der Inhalt ausgegeben.
Ich habe jetzt mal mit IFrames die jeweiligen Profile angezeigt. Außerdem werden diese auch noch auf der Profile-Seite aufgelistet. So sieht nun die fertige Datei aus:
<?php /* Plugin Name: Profile Plugin URI: http://blog.stevieswebsite.de Description: Dieses Plugin zeigt die Profile für Blogverzeichnisse an. Author: SteviesWebsite Version: 1.0 Author URI: http://blog.stevieswebsite.de function profile() { ?> <h1>Profile</h1> <a href="/wp-admin/admin.php?page=bloggerei">Bloggerei</a><br /> <a href="/wp-admin/admin.php?page=blogoscoop">Blogoscoop</a><br /> <a href="/wp-admin/admin.php?page=topblogs">Top Blogs</a><br /> <?PHP } function bloggerei() { echo "<iframe style=\"width:100%;height:600px\" src=\"http://www.bloggerei.de/blog/9176/stevieswebsite-blog\"></iframe>"; } function blogoscoop() { echo "<iframe style=\"width:100%;height:600px\" src=\"http://www.blogoscoop.net/blog/blog.stevieswebsite.de\"></iframe>"; } function topblogs() { echo "<iframe style=\"width:100%;height:600px\" src=\"http://www.topblogs.de/blog-5901.html\"></iframe>"; } function profileAddMenu() { add_menu_page('Profile', 'Profile', 10, __FILE__, 'profile'); add_submenu_page(__FILE__, 'Bloggerei', 'Bloggerei', 10, 'bloggerei', 'bloggerei'); add_submenu_page(__FILE__, 'Blogoscoop', 'Blogoscoop', 10, 'blogoscoop', 'blogoscoop'); add_submenu_page(__FILE__, 'Top Blogs', 'Top Blogs', 10, 'topblogs', 'topblogs'); } add_action('admin_menu', 'profileAddMenu'); ?>
Wie geht es weiter?

Das kann natürlich nur ein erster Einblick in die Erstellung von WordPress-Plugins sein. Wer mehr wissen will, der sollte in Zukunft wieder hier vorbeischauen, da ich meine Erfahrungen bei der Erstellung eigener Plugin sicher hier weitergeben werde.
Im neuen WordPress Buch * von Frank Bültge und Thomas Boley wird unter anderem die Entwicklung von WordPress-Plugins behandelt. Ein sehr empfehlenswertes Buch.
vielen dank für das Tutorial :)
Dann wäre der Wert des Parameters „Datei“ = bloggerei … versteh ich nicht.
Ich bin zwar auch erst dabei, durch die Tiefen des WordPress-Plugin-Codex zu steigen. Aber soweit ich weiß steht an dieser Stelle „nur“ ein eindeutiger Identifier, wenn es sich um ein Submenü eines selbst erstellten Menüs handelt.
Deshalb steht dort auch kein Dateiname, sondern z.B. „bloggerei“.
Ist ein sehr interessantes und hilfreiches Thema.
Danke.
Wirklich sehr schöner und gut verständlicher Artikel zu einem Thema von dem ich dachte, dass ich es nie anpacken werde. Der Artikel hat mich jetzt aber motiviert. Deshalb werde ich mal bisschen probieren und mich belesen.
Danke!
@Peer:
Dann sollte das im Text angepasst werden.
Sehr interessantes Thema, leider fehlt mir das nötige Wissen um ein WordPress Plugin zu installieren! Vielleicht werde ich das in Zukunft auch mal hinkriegen..
Edit:
Mir fehlt nicht das nötige Wissen um ein WordPress Plugin zu installieren, sondern um eines zu Programmieren! ;o)
das ist für mich die königsklasse, ich bin froh, dass ich meinen blog überhaupt zum laufen gebracht habe. davon lasse ich lieber die finger.
Hammer Artikel wieder einmal. Glaube, besser geht das gar nicht.
Ich denke dennoch, dass man keine Plugins benötigt und dass zu viele Plugins für einen Blog sogar von Nachteil sind. Mehr Code, also ist man in punkto SEO benachteiligter.
Mehr Sicherheitslücken udgl.
Man verbringt soviel Zeit mit all diesen Plugins, um ja alles richtig zu machen, dass man irgendwann keinen Bock mehr hat und den Sinn aus den Augen verliert. Nämlich das schreiben an sich. :-)
Das verrät mir halt meine Schläue. Kann natürlich auch falsch liegen. Ja gut, wenn wir alle unterschiedliche Ansichten haben. :)
Noch heute ein super artikel. Aber nicht ganz richtig. Zumindest kann man es falsch verstehen.
function profileAddMenu() {
//erstellt die Gruppe „Name“
add_menu_page(‚Titel‘, ‚Name‘, 10, __FILE__, ‚cs_konfigurator_option_page‘);
//erstellt eine Optionsseite in der Gruppe „Name“
add_submenu_page(Optionsgruppenname, ‚Browsertitel‘, ‚Angezeigter Name‘, 10, ‚$sitename=SEITENNAME‘, ‚Funktion‘);
//erstellt eine NICHT-angezeigt Seite als Unterseite der oberen unterseite. Wenn man als Elternteil schon eine Unterseite angibt, so wird diese Seite eine weitere Unterseite der Unterseite. Also eine Unterseite der 2. Ebene. Diese kann man dann mit admin.php?page=$seitenname_dieser_unterseite aufrufen.
add_submenu_page(‚$sitename‘, ‚$seitenname_dieser_unterseite‘, ‚es‘, 10, ‚test‘, ‚funktionstest‘);
}
add_action(‚admin_menu‘, ‚profileAddMenu‘);
PS: meine Variablen durch feste Werte ersetzen.
Hier noch eine etwas bessere erklärung
http://image-upload.de/image/3IRziP/2d22c7ea29.gif