wordpress

WordPress ist eine sehr starke Plattform, die dank ihrer Einfachheit und Flexibilität enorme Verbreitung in der Bloggosphäre gefunden hat. Wer WordPress Templates schreiben kann, hält ein sehr mächtiges Werkzeug in den Händen. Die Möglichkeiten von viralem Marketing mit WordPress Themes und auch die der Monetarisierung dieser Templates sind grenzenlos.

Eben das gilt auch für die WordPress Plugins. Man kann sie monetarisieren, für virales Marketing benutzen, die Usability des eigenen Blogs oder des Blogs seines Kunden verbessern und auch seine Reputation in der WordPress Community pimpen. Wenn man sein Plugin zum Beispiel unter die Creative Commons Lizenz stellt und mit der Auflage, einen Link zu setzen, weiter gibt kann man so zusätzlich noch SEO betreiben (gilt natürlich auch für Themes). Außerdem sind Plugins eine super Ergänzung für ausgefallene Projekte, Marketingideen, Affiliatezeugs usw.

All das sind verdammt gute Gründe sich mit den WordPress Plugins auseinander zusetzen.

Zum testen würde ich eien “Testumgebung” auf dem localhost empfehlen. Einfach die aktuelle WordPressinstallation mit einer extra dafür angelegten Datenbank durchführen und alle tests darin durchführen bevor ihr auf die Idee kommt das ganze in eurem eigenen Blog zu testen ;-) Außerdem spart ihr viel Zeit, weil das hochladen entfällt.

Die Dateien

Für eurer Plugin reicht theoretisch eine einzelne Datei. Es empfiehlt sich aber einen eigenen Ordner anzulegen, besonders wenn ihr mehrere Dateien habt ist es sinnvoll alles geordnet in einem Ordner ggf. mit Unterordnern anzulegen.

Nun braucht ihr eure Plugin Datei. Der Name ist egal. Für dieses Beispiel nehm ich einfach mal den Namen tagcloud.php

Das Plugin beginnt mit einem Kommentar, der Informationen enthält die später auf der Plugin Seite angezeigt werden. Das sieht bei mir so aus:

/*
Plugin Name: Tagcloud
Plugin URI: htp://www.online-im-park.de/
Version: 1.0
Author: <a href=”http://www.le-chaim.de/”>Chaim</a>
Description: Nur ein kleiner Test :-)
*/

In der Pluginübersicht sieht es dann so aus:

plugins-verwalten-e280b9-testumgebung-e28094-wordpress

Anmerkung: Ich habe nicht vor in diesem Artikel einen kompletten Bauplan für das Programmieren einer Sidebar zu liefern. Dafür bin ich jetzt einfach zu faul. Es geht nur um allgemeine Aspekte eines WordPress Plugins.

In eurem Ordner könnt ihr dann noch einen readme.txt File und/oder Lizenzinformationen ablegen. Wenn ihr das Plugin nur für euch nutzen wollt, braucht ihr dies natürlich nicht zu tun ;-) .

Anatomie eines WordPress Plugins

WordPress Plugins sind Objekt orientiert aufgebaut. Ihr braucht also erstmal eine “Hauptklasse” und dann die jeweiligen Funktionen. Angenommen unsere Tagcloud soll dem Header einen Kommentar hinzufügen, einen Link in den Footer knallen und ein Widget für die Sidebar liefern.

Dann definieren wir in unserer Hauptklasse erst einmal die Funktion zum ergänzen des Headers und des Footers.

class meinetagcloud {

function addHeaderCode() {
?>
<!– Ich war hier ;-) –>
<?php
}

function addFooterCode() {

?>
Danke an <a href=”http://www.le-chaim.de/”>Chaim</a> für das coole Plugin.
<? }
}

}

Und diese Funktion rufen wir dann später mit der WordPress Funktion add_action auf. Mit add_action kann man bestimmten WordPress Komponenten (header, footer etc.) Funktionen hinzufügen. Das heißt, dass unsere Kommentar im Quelltext des Frontends da angezeigt wird wo <? wp_header(); ?> steht. Falls das verwendete Template keinen WordPress Header verwendet ist die Funktion nutzlos.

So geht’s mit add_action:

add_action(‘wp_head’, array(&$wp_suggest, ‘addHeaderCode’), 1);
add_action(‘wp_footer’, array(&$wp_suggest, ‘addFooterCode’), 1);

testumgebung1

So weit so gut. Nun möchte ich gerne noch ein Widget in der Sidebar haben.

Dafür lege ich eine extra Funktion an. Die Funktion tagcloud_widget. Sie ist wie folgt aufgebaut:

function meinetagcloud_widget() {
?>

<a href=”http://www.le-chaim.de/”>Chaim</a>, I love your blog!

<?

}

Das ganze muss man dann noch mit:

function init_meinetagcloud(){
register_sidebar_widget(“meinetagcloud”, “meinetagcloud_widget”);
}
add_action(“plugins_loaded”, “init_meinetagcloud”);

Das sieht dann so aus:

testumgebung

Und weil ich so ein netter, endnutzerfreundlicher Entwickler bin richte ich zusätzlich zu meinem Plugin einen Adminbereich ein um den Link aus dem Footer wieder zu entfernen.

Plugin Adminoberfläche:

function wps_admin_options() {

if(isset($_POST['edit'])) {
$wpsOptions['linklove'] = $_POST['linklove'];

echo $wpsOptions['linklove'];

}

/* ————- Linklove Option —————– */

$opt_name = ‘wps_linklove’;
$hidden_field_name = ‘wps_submit_hidden’;
$data_field_name = ‘wps_linklove’;

$opt_val = get_option($opt_name);

if( $_POST[$hidden_field_name] == ‘Y’ ) {

$opt_val = $_POST[$data_field_name];

update_option( $opt_name, $opt_val );

?>

<div class=”updated”><p><strong><?php _e(‘Options saved.’, ‘mt_trans_domain’ ); ?></strong></p></div>
<?

}

?>
<p>
<h1>Einstellungen</h1>
<b>Linklove:</b> <br>

<form method=”post” action=”<?php echo $_SERVER["REQUEST_URI"]; ?>”>
<input type=”hidden” name=”<?php echo $hidden_field_name; ?>” value=”Y”>
Link zu <a href=”http://www.le-chaim.de/”>Chaim</a> im Footer anzeigen
<input type=”checkbox” name=”<? echo $data_field_name; ?>” <? if($opt_val == “on”) echo “checked”; ?>>
<br><br>
<input type=”submit” name=”edit” value=”edit!”>
</form>

</p>
<?
}

Zur Erklärung:

Ich habe die Variable $opt_name sie enthält den Namen der Einstellung “Link anzeigen bzw.verbergen”. Und dazu gibts noch 2 Variablen den Namen eines versteckten Feldes (um zu gucken ob das Formular abgeschickt wurde) und den der Checkbox. Dann hab ich die Variable $opt_val sie enthält den aktuellen Wert meiner Einstellung. Den Wert ziehe ich mir mit get_option();

Dann frag ich ab ob das Formular abgeschickt wurde und wenn ja welchen Wert die Checkbox bekommen hat. Die Einstellung setze ich dann auf diesen Wert. Wenn alles erfolgreich war gibt das Script die automatische WordPressmeldung aus.

Dann gibts noch das Formular um die Linklove Einstellungen vor zu nehmen:

Einfach mit HTML aufgesetzt. Und an aktuell aufgerufene Seite gesendet ($_SERVER["REQUEST_URI"];) ich frage noch kurz ab welchen Wert meine Einstellung hat. Wenn sie auf on steht dann ist die Box automatisch abgehakt und wenn nicht ist sie leer.

Das ganze ist also ganz einfach.

Nun müssen wir aber auch noch unsere Footer Funktion Ergänzen.

Wir ziehen uns den aktuellen Wert der Einstellung mit $opt_val = get_option(‘wps_linklove’); und fragen dann mit IF ab: if($opt_val == “on”) wenn IF true zurück gibt, dann gibts den Link. Ansonsten gibts ihn nicht. Mit else könnte man noch so eine gehessige Meldung wie “hier bloggt ein linkgeiziger Blogger” oder sowas ausgeben ;-) das überlasse ich euch.

Das ganze wars dann auch schon. In den Rest müsst ihr euch mit der Zeit einarbeiten. Hier noch ein paar gute Links:

Have Fun!


Anmerkungen:

Kommentare