WordPress ist die derzeit größte im Internet verfügbare Blogging-Plattform. und mit der offiziellen Version von Version drei gleich um die Ecke wird es nur noch größer. In den nächsten unabhängigen Abschnitten lernen wir die Grundlagen der Entwicklung von WordPress-Plugins kennen, beginnend mit der Erstellung unseres ersten einfachen Plugins "Simple Optimization".
In diesem Lernprogramm wird davon ausgegangen, dass Sie zumindest ein wenig über PHP und die WordPress-Syntax verfügen. Obwohl wir alles abdecken, können Sie mit etwas Wissen die Konzepte leichter verstehen. Ich gehe außerdem davon aus, dass Sie ein WP-Blog-Setup eingerichtet haben und bereit sind.
Der erste Schritt beim Schreiben eines WP-Plugins besteht darin, alles zu bestimmen, was Sie möchten. Da dies unser erstes Plugin ist, werden wir nichts zu drastisches tun. Lassen Sie uns etwas erstellen, das unseren Blog beschleunigen wird. Unsere Seiten werden schneller gerendert, und wir werden auch ein wenig SEO tun, um den Suchrang und die Auffindbarkeit zu verbessern.
"Erstellen Sie immer eine Liste der Funktionen Ihres Plugins, bevor Sie Code schreiben!"
Um zu starten, navigieren Sie zu Ihrem Plugins-Ordner ("/ wp-content / plugins /") und erstellen Sie einen neuen Ordner. Wir nennen unsere "einfache Optimierung". Als nächstes müssen wir in diesem Ordner zwei Dateien erstellen. Die erste ist die eigentliche Plugin-Datei (genannt "main.php"), und die zweite ist die obligatorische README ("readme.txt"). Wir werden readme.txt vorerst leer lassen. Öffnen Sie also die main.php in Ihrem bevorzugten Texteditor und kopieren Sie sie in den folgenden Code.
Dieser Text ist das Bare-Bones-Minimum, das benötigt wird, damit ein Plugin im WordPress-Plugin-Verzeichnis angezeigt wird. Sie müssen natürlich jedes Teil so ausfüllen, wie Sie es für richtig halten.
Die ersten beiden Funktionen, die wir implementieren werden, werden auch die einfachsten sein. WordPress fügt standardmäßig mehrere Meta-Tags hinzu
Abschnitt Ihres Blogs, aber die einfache Tatsache der Sache ist, dass diese Meta-Tags absolut keinen Wert haben; Also werden wir WordPress einfach daran hindern, sie hinzuzufügen. Jedes Mal, wenn WordPress eine Aktion ausführt, wird es entweder als a bezeichnet Filter oder ein Aktion, Wir können diese Filter und Aktionen entweder entfernen oder bearbeiten (eine Liste aller Filter finden Sie hier und alle Aktionen hier). In diesem Fall möchten wir die verschiedenen Aktionen entfernen, mit denen diese Meta-Tags hinzugefügt werden.Dazu verwenden wir eine sehr einfache Funktion namens "remove_action ('action', 'function')". Diese Funktion entfernt die im zweiten Parameter deklarierte Funktion aus der Aktion, dem ersten Parameter.
// bereinigen wp_head // Entferne einen wirklich einfachen Discovery-Link remove_action ('wp_head', 'rsd_link'); // Windows Live Writer-Link entfernen remove_action ('wp_head', 'wlwmanifest_link'); // Entferne die Versionsnummer remove_action ('wp_head', 'wp_generator');
Dasselbe Prinzip gilt für die beiden Filter, die wir entfernen möchten:
// Entferne geschweifte Anführungszeichen remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // HTML in Benutzerprofilen zulassen remove_filter ('pre_user_description', 'wp_filter_kses');
Nachdem wir diese Aufblähung abgeschnitten haben, stellen wir sicher, dass unser Blog über einige grundlegende SEO verfügt. Das heißt, stellen wir sicher, dass wir Schlüsselwörter pro Seite haben, die dieser Seite entsprechen, und die Beschreibung ändern, damit sie mehr zum Artikel passt. Für unsere Keywords greifen wir die Tags der aktuellen Seite / des aktuellen Posts auf. Dies wird durch die Funktion sehr einfach gemacht "wp_get_post_tags ()". wp_get_post_tags gibt ein Array von Tags aus dem aktuellen Beitrag zurück. Wir können dieses Array dann leicht in eine Zeichenfolge formatieren und innerhalb unseres Headers (innerhalb der Funktion) platzieren "wp_head ()", dass jedes Thema bereits enthalten sollte), indem Sie unsere Funktion an die Aktion wp_head anhängen.
Beginnen wir mit dem Erstellen einer neuen Funktion, tags_to_keywords (), und innerhalb dieser Funktion schreiben wir ein einfaches wenn Aussage, Dabei wird geprüft, ob die aktuelle Seite ein einzelner Beitrag oder eine Seite ist (mithilfe der WP-Funktionen: is_single () und is_page ()). Als Nächstes erstellen wir in dieser if-Anweisung eine Variable namens named $ tags, und setzen Sie den Inhalt auf die Funktion wp_get_post_tags (); Damit diese Funktion jedoch funktioniert, müssen Sie einen Parameter "post_id" übergeben. Dies erreichen Sie am einfachsten, indem Sie die WP-Variable globalisieren $ post welche die Beitrags-ID enthält ($ post-> ID, $ post ist ein Objekt, weshalb wir seine Werte so nennen..
// SEO // Tags als Schlüsselwörter hinzufügen function tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID);
Als nächstes verwenden wir eine für jeden durch die $ -Tags-Daten filtern und ein neues Array nur mit den gewünschten Informationen erstellen ($ tag_array). Anschließend implodieren wir das Array in eine Zeichenfolge und trennen jedes Element mit einem Komma und einem Leerzeichen vom Array ($ tag_string). Dann erstellen wir eine weitere if-Anweisung, die prüft, ob $ tag_string einen Wert hat (was bedeutet, haben wir Tags für den Beitrag), und wenn ja, wird der endgültige HTML-Code ausgegeben.
function tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tags als $ tag) $ tag_array [] = $ tag-> name; $ tag_string = implode (',', $ tag_array); if ($ tag_string! == ") echo"\ r \ n ";
Das letzte, was wir jetzt tun müssen, ist unsere neue Funktion mit der Aktion wp_head zu verknüpfen. Dazu rufen wir an add_action ('action', 'function'), und übergeben Sie die Parameter "wp_head" und "tags_to_keywords" (in dieser Reihenfolge).
add_action ('wp_head', 'tags_to_keywords');
Um unsere SEO weiter zu verbessern, fügen wir unsere Beschreibungs-Metadaten ebenfalls in den Header ein und verwenden dabei dieselbe Methode wie die Schlüsselwörter. Sobald die if-Anweisung neu geschrieben wurde, erstellen wir eine neue Variable $ all_post_content und füllen Sie es mit der WP-Funktion wp_get_single_post () (und übergeben Sie den Parameter $ post-> ID). Dadurch erhalten Sie ein Objekt mit allen Daten zu unserer Post. Mit dieser Variablen können wir eine Beschreibung erstellen, die den tatsächlichen Inhalt des Beitrags verwendet, aber wir werden sie mit der Funktion auf einhundert Zeichen verkürzen substr ($ Auszug). Und dann geben wir einfach den HTML-Code mit dem eingeschriebenen Auszug aus. (Optional können Sie auch ein sonst Anweisung und geben Sie Ihre Blogbeschreibung mit der Funktion wieder get_bloginfo ('description').)
// Außer als Beschreibung hinzufügen function excerpt_to_description () global $ post; if (is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' […] “; Echo "\ r \ n "; else echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');
Die letzte Funktion unseres Plugins besteht darin, unsere Datenbanktabellen zu optimieren, indem der Overhead (nutzlose / überschüssige Daten in einer durch Manipulation der Datenbank erstellten SQL-Tabelle) entfernt wird. Zunächst erstellen wir eine neue Funktion (Optimierungsdatenbank), und darin werden wir die globale WPDB-Variable ($ wpdb). Auf diese Weise können wir mit der Datenbank interagieren, ohne unsere Authentifizierungsdetails erneut eingeben zu müssen. $ wpdb hat mehrere Methoden, mit denen Sie mit der Datenbank interagieren und Informationen aus der Datenbank abrufen können (vollständige Liste hier), aber wir werden nur eine, get_results verwenden. Wenn Sie get_results mit den Parametern von "SHOW TABLES" und "ARRAY_A" verwenden, wird ein assoziatives Array aller Tabellennamen in der Datenbank an uns zurückgegeben. An diesem Punkt können wir einen foreach verwenden, um jeden der Array-Werte zu durchlaufen (using array_values Um den Tabellennamen zu ermitteln, da er von der Funktion überlagert ist, und eine andere $ wpdb-Methode zu verwenden, führen Sie eine Abfrage aus, um den Befehl zum Optimieren auszuführen ("OPTIMIZE TABLE _____").
// Datenbank optimieren function Optimize_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); foreach ($ all_tables als $ tables) $ table = array_values ($ tables); $ wpdb-> query ("OPTIMIZE TABLE". $ table [0]);
Während diese Funktion funktioniert, wird sie nie ausgeführt, da WordPress keine Möglichkeit hat, sie auszuführen. Glücklicherweise verfügt WordPress über eine Funktion namens cron, mit der Funktionen in bestimmten Intervallen (täglich, wöchentlich usw.) ausgeführt werden. Das ist perfekt für uns, da wir unsere Datenbank häufig optimieren wollen. Um Cron zu verwenden, erstellen wir eine neue Funktion (simple_optimization_cron_on), und füllen Sie es mit einem anderen Funktionsaufruf an wp_schedule_event (). Für die Arbeit benötigt wp_schedule_event drei Dinge: eine Ausführungszeit, ein Intervall zwischen jedem Lauf und eine aufzurufende Funktion; Wir übergeben also die Parameter: 'time ()' (wir nehmen an, dass immer dann, wenn das cron-Ereignis erstellt wird, ein guter Zeitpunkt ist, um die Funktion aufzurufen), 'daily', 'Optimize_database' in dieser Reihenfolge.
Funktion simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'Optimize_database');
Toll, jetzt haben wir unsere Optimierungsdatenbank Funktion wird der WP cron-Liste hinzugefügt, oder wir würden das nennen simple_optimization_cron_on Funktion. Es ist wirklich unsicher und es ist eine schlechte Praxis, eigene Ereignisadditionsfunktionen aufzurufen, da die Funktion durch ein beliebiges Ereignissystem möglicherweise mehrmals aufgerufen wird. WordPress verfügt über eine Reihe spezifischer Hooks für Plugins, um dieses Problem zu lösen: register_activation_hook und register_deactivation_hook. Diese Funktionen werden aufgerufen, wenn ein Plugin eingeschaltet (aktiviert) und ausgeschaltet (deaktiviert) ist. Auf diese Weise kann unsere Cron-Funktion nur einmal hinzugefügt werden. Jetzt haben wir die Möglichkeit, das Cron-Ereignis zu entfernen, wenn das Plugin nicht mehr verwendet wird. Um zu funktionieren, benötigen diese Funktionen zwei Informationen: die URL der Datei mit den Aktivierungs- und Deaktivierungsfunktionen (99% der Zeit, in denen "__FILE__" perfekt funktioniert) und den Namen der Aktivierungs- und Deaktivierungsfunktion. Wir erstellen auch eine neue Funktion (simple_optimization_cron_off), und füllen Sie es mit einem Aufruf an eine andere Funktion (wp_clear_scheduled_hook ('Optimize_database')), um unser Cron-Ereignis zu löschen.
Funktion simple_optimization_cron_off () wp_clear_scheduled_hook ('Optimize_database'); register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off');
Das letzte, was wir für unser neues Plugin tun müssen, ist die readme.txt-Datei. Die Datei readme.txt wird vom WordPress Plugin-Verzeichnis verwendet, um alle Informationen anzuzeigen, die Sie über Ihr Plugin bereitstellen. Um zu lernen, wie man eine effektive readme.txt-Datei schreibt, können Sie die Standardeinstellung von WP herunterladen und entsprechend an Ihr Plugin anpassen. Da unsere so einfach war, endete ich persönlich mit:
=== Einfache Optimierung === Mitwirkende: Jonathan Wolfe Plugin-Link: http://net.tutsplus.com/ Tags: einfach, Optimierung, Schlüsselwörter, Tags, Beschreibung, SEO, Optimierung, Datenbank Erforderlich mindestens: 2.5.1 Getestet bis zu: 2.9.2 Stable-Tag: Trunk Fügt dem WordPress-Backend automatisch mehrere Optimierungsfunktionen hinzu, damit Ihr Blog oder Ihre Website schneller läuft. == Beschreibung == Simple Optimization fügt WordPress mehrere Funktionen hinzu, die dabei helfen, das Fett aus dem System zu trimmen und auch ein wenig nach dem Säubern zu reinigen, was zu einer schnelleren Ladezeit für Ihren Blog oder Ihre Website führt. ** Features ** _Entfernen Sie nutzlose Meta-Tags: _ * "rsd_link" - Really Simple Discovery Link * "wlwmanifest_link" - Windows Live Writer-Link * "wp_generator" - WordPress-Versionsnummer _Entfernen Sie nutzlose Filter: _ * "wptexturize" "wp_filter_kses" - HTML in Benutzerprofilen _SEO: _ * Fügen Sie Post-Tags in ein als Schlüsselwörter _Routinely die Datenbank optimieren_ == Installation == 1. Laden Sie das WordPress-Plugin-Verzeichnis herunter, entpacken Sie es und laden Sie es hoch. 2. Aktivieren Sie das Plugin in Ihrer WordPress-Administration
Sie haben gerade erfolgreich Ihr erstes WordPress-Plugin geschrieben, das funktioniert und für das WP Plugins-Verzeichnis bereit ist. Auf dem Weg lernten Sie etwas über Filter und Aktionen, über globale WP-Objekte, viel über die WordPress-Nomenklatur, über die Interaktion mit der Datenbank, über Cron-Ereignisse und über Aktivierungs- / Deaktivierungs-Hooks. Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar und ich werde so schnell wie möglich antworten.
ICH WÜRDE); // Post-Tags nach foreach abrufen ($ tags als $ tag) // jeden Tag durchlaufen $ tag_array [] = $ tag-> name; // neues Array nur mit Tagnamen erstellen $ tag_string = implode (',', $ tag_array); // Array in durch Kommas getrennte Zeichenfolge konvertieren if ($ tag_string! == ") // es gibt Tags" echo "\ r \ n "; // Meta-Tag zu hinzufügen add_action ('wp_head', 'tags_to_keywords'); // füge tags_to_keywords zur wp_head-Funktion hinzu // // Außer als Beschreibung hinzufügen function excerpt_to_description () global $ post; // Zugriff auf das $ post-Objekt erhalten if (is_single () || is_page ()) // Nur auf Beiträgen oder Seiten ausführen $ all_post_content = wp_get_single_post ($ post-> ID); // Holen Sie sich den gesamten Inhalt von der Post / Seite $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' […] “; // Holen Sie sich die ersten 100 Zeichen und hängen Sie "[…]" an das Ende-Echo an.\ r \ n "; // Meta-Tag zu hinzufügen else // nur ausführen, wenn kein Post- oder Seitenecho vorliegt "\ r \ n "; // Meta-Tag zu hinzufügen add_action ('wp_head', 'excerpt_to_description'); // füge excerpt_to_description zur wp_head-Funktion hinzu // Datenbank optimieren-Funktion Optimize_database () global $ wpdb; // Zugriff auf $ wpdb-Objekt erhalten $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); // alle Tabellennamen abrufen füreach ($ all_tables als $ tables) // jeden Tabellennamen durchlaufen $ table = array_values ($ tables); // Holen Sie den Tabellennamen aus dem Array $ wpdb-> query ("OPTIMIZE TABLE". $ table [0]); // den SQL-Befehl "SQL" für die Tabelle ausführen Funktion simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'Optimize_database'); // rdd Optimize_database für Wp-cron-Ereignisse function simple_optimization_cron_off () wp_clear_scheduled_hook ('Optimize_database'); // Optimize_Datenbank aus WPCon-Ereignissen entfernen register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); // simple_optimization_cron_on bei Plugin-Aktivierung ausführen register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off'); // simple_optimization_cron_off bei Deaktivierung des Plugins ausführen?>