Eine der wichtigsten Funktionen von WordPress bei der Erweiterung der Funktionalität ist die Meta-Box-API. Mit diesen Meta-Boxen können Sie problemlos zusätzliche Daten zu Ihren Inhalten hinzufügen. Zum Beispiel die Posten Sie Tags In der Meta-Box können Sie Tags für Ihren Beitrag festlegen.
In diesem Artikel werden wir ein grundlegendes SEO-Plugin erstellen, das eine Meta-Beschreibung und einen Open Graph-Titel und ein Beschreibung-Tag in der Kopf
Element von WordPress-Seiten. Außerdem erfahren Sie, wie Sie benutzerdefinierte Meta-Boxen erstellen, vom Benutzer bereitgestellte Daten bereinigen, die Daten in einem Beitrag oder auf einer Seite speichern und die gespeicherten Daten abrufen.
Da ich nicht jedes einzelne Element erklären werde, was die Codes in diesem Tutorial verwenden, wird ein Grundwissen über Meta-Boxen und die Funktionsweise der PHP-Funktionen vorausgesetzt. Wenn Sie nicht mit den Grundlagen vertraut sind, beginnen Sie mit dem Erstellen von benutzerdefinierten WordPress-Schreib- / Metaboxen.
Zuerst müssen wir entscheiden, wo die Meta-Box erscheinen soll.
In unserem Plugin wird die Meta-Box im Post
und Seite
Bildschirm. Zu diesem Zweck wird eine Funktion erstellt, die eine Variable enthält, in der ein Array gespeichert wird, wo die Meta-Box angezeigt werden soll, und a für jeden
Schleifen Sie diese Schleife durch das Array und fügen Sie die Meta-Box mit dem Befehl zum angegebenen Bildschirm hinzu add_meta_box
Funktion.
Und zum Schluss ist die Funktion mit dem verbunden add_meta_boxes
Aktion.
function tes_mb_create () / ** * @array $ screens Schreibt einen Bildschirm, auf dem die Meta-Box angezeigt werden soll. * @values Beitrag, Seite, Dashboard, Link, Anhang, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ bildschirme als $ screen) add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', $ screen, 'normal', 'high')); add_action ('add_meta_boxes', 'tes_mb_create');
Alternativ können Sie ein Doppel hinzufügen add_meta_box
Funktion, um die Meta-Box sowohl auf dem Post- als auch auf dem Seitenbildschirm einzuschließen:
function tes_mb_create () add_meta_box ('tes-meta', 'Suchmaschinenliste', 'tes_mb_function', 'post', 'normal', 'high'); add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', 'page', 'normal', 'high')); add_action ('add_meta_boxes', 'tes_mb_create');
Aus dem Code oben wird auf die Callback-Funktion zum Ausdrucken des HTML-Codes für den Bildschirmbearbeitungsabschnitt verwiesen tes_mb_function
Welches ist das dritte Argument, an das weitergegeben wurde add_meta_box
Funktion.
In unserem Plugin codieren wir nur zwei HTML-Formularfelder, um die Titel- und Beschreibungsdaten zu verarbeiten.
Funktion tes_mb_function ($ post) / / ruft die Metadatenwerte ab, wenn sie vorhanden sind $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); // Fügen Sie ein Nonce-Feld hinzu, damit wir es später überprüfen können, wenn es überprüft wird. Wp_nonce_field ('tes_inner_custom_box', 'tes_inner_custom_box_nonce'); Echo '';
Titel-Tag: Meta-Beschreibung:
Die Erklärung des tes_mb_function
Der obige Code lautet wie folgt:
An diesem Punkt sollte die Meta-Box im Post- und Seitenbildschirm angezeigt werden.
Eine Meta-Box ist erst abgeschlossen, wenn sie die Daten in der Datenbank speichern kann. Der Name der Funktion zum Speichern der Daten wird sein tes_mb_save_data
. Ihr Code lautet wie folgt.
Funktion tes_mb_save_data ($ post_id) / * * Wir müssen überprüfen, ob dies von unserem Bildschirm kam und mit der richtigen Berechtigung *, da save_post zu anderen Zeiten ausgelöst werden kann. * / // Überprüfe, ob unser Nonce gesetzt ist. if (! isset ($ _POST ['tes_inner_custom_box_nonce']))) $ post_id zurückgeben; $ nonce = $ _POST ['tes_inner_custom_box_nonce']; // Vergewissern Sie sich, dass die Nonce gültig ist. if (! wp_verify_nonce ($ nonce, 'tes_inner_custom_box')) Rückgabe $ post_id; // Wenn es sich um ein automatisches Speichern handelt, wurde unser Formular nicht übermittelt, daher möchten wir nichts tun. if (definiert ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id; // Überprüfen Sie die Berechtigungen des Benutzers. if ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) return $ post_id; else if (! current_user_can ('edit_post', $ post_id)) return $ post_id; / * OK, wir können jetzt die Daten speichern. * / // Wenn alte Einträge vorhanden sind, rufen Sie sie ab. $ Old_title = get_post_meta ($ post_id, '_tes_meta_title', true); $ old_description = get_post_meta ($ post_id, '_tes_meta_description', true); // Benutzereingabe desinfizieren. $ title = sanitize_text_field ($ _POST ['tes_meta_title']); $ description = sanitize_text_field ($ _POST ['tes_meta_description']); // Aktualisiere das Meta-Feld in der Datenbank. update_post_meta ($ post_id, '_tes_meta_title', $ title, $ old_title); update_post_meta ($ post_id, '_tes_meta_description', $ description, $ old_description); add_action ('save_post', 'tes_mb_save_data');
Untersuchen wir den obigen Code:
save_post
kann zu anderen Zeitpunkten ausgelöst werden und auch überprüfen, ob die Nonce zuvor eingestellt wurde tes_mb_function
ist gültig.$ old_title
und $ old_description
Variable. Wir machen das, weil die update_post_meta
Eine Funktion, die die Daten in der Datenbank speichert, erfordert optional, dass ein alter Wert überprüft wird, bevor die Zeile der Meta-Box-Datenbank mit den neuen Werten aktualisiert wird.sanitize_text_field
Diese Funktion konvertiert HTML in seine Entität, entfernt alle Tags, entfernt Zeilenumbrüche, Tabulatoren und zusätzlichen Leerraum und entfernt Oktetts.update_post_meta
.tes_mb_save_data
ist mit dem verbunden save_post
Aktion zum Speichern der Meta-Box-Daten, wenn der Beitrag oder die Seite aktualisiert wird.Vergessen Sie nicht, dass die gespeicherten Daten dazu verwendet werden sollen, einen Open Graph-Titel und eine Beschreibung sowie den Meta-Description-Tag in der Datei hinzuzufügen Kopf
Element jeder Seite.
Dazu erstellen wir eine Funktion mit dem Namen tes_mb_display
die die gewünschten Tags enthalten und danach einhaken wp_head
Aktion.
function tes_mb_display () global $ post; // Abrufen der Metadatenwerte, falls vorhanden $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); Echo ' '; add_action ('wp_head', 'tes_mb_display');
$ post
Objekt global.$ tes_meta_title
und $ tes_meta_description
Variablen jeweils. Kopf
Element.wp_head
.Wenn Sie einen Titel und eine Beschreibung für einen Beitrag oder eine Seite hinzugefügt und gespeichert haben, sollte beim Anzeigen dieser Seitenquelle neben den von Suchmaschinen verwendeten Meta-Beschreibungen auch der Titel und das Beschreibung-Tag von Open Graph angezeigt werden.
In diesem Artikel haben wir ein grundlegendes SEO-Plugin erstellt, das dem Header-Abschnitt von WordPress eine Meta-Beschreibung und Open Graph-Tags hinzufügt, die von sozialen Netzwerken von Suchmaschinen verwendet werden.
Wir haben gelernt, wie man Meta-Boxen erstellt, Felder formuliert, die Daten bereinigt, bevor sie in der Datenbank gespeichert werden und die gespeicherten Daten zur Verwendung abgerufen werden.
Eine weitere Zuweisung, um mehr über diesen Prozess zu erfahren: Erweitern Sie dieses Plugin und fügen Sie ein Meta-Schlüsselwortfeld zum Meta-Box-Formular hinzu. Fügen Sie es auch in die Tags ein, die in den WordPress-Header eingefügt werden.