Verwenden von WordPress-Meta-Boxen zum Erstellen eines grundlegenden SEO-Plugins

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.

Erstellen der Meta-Box

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');

Codierung der Meta-Box-Felder

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:

  • Rufen Sie die Metadatenwerte nur ab, wenn sie vorhanden sind, und speichern Sie sie in einer Variablen. Dies geschieht, um die Felder mit ihren Werten zu füllen, wenn sie in der Datenbank vorhanden sind.
  • Ein Nonce-Feed wird hinzugefügt, damit wir ihn später während der Überprüfung überprüfen können, bevor die in die Formularfelder eingefügten Daten in der Datenbank gespeichert werden.
  • Das HTML-Formular, das aus einem Textfeld-Eingabeelement und einem Textbereich zum Erfassen der Titel- und Beschreibungs-Tag-Daten besteht, wird ausgegeben / gedruckt.

An diesem Punkt sollte die Meta-Box im Post- und Seitenbildschirm angezeigt werden.


Meta-Box-Daten speichern

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:

  • Zunächst überprüfen wir, ob dies von unserem Bildschirm kam und mit der richtigen Autorisierung, weil 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.
  • Wenn ein Eintrag in der Datenbank bereits vorhanden ist, rufen wir ihn ab und speichern ihn in $ 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.
  • Danach werden die übermittelten Daten mit WordPress bereinigt ' 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.
  • Die Metadaten werden über die Datenbank aktualisiert update_post_meta.
  • Endlich, das 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.

Nutzung der gespeicherten Daten

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'); 
  • Um die Beitrags-ID erfolgreich zu erkennen, greifen wir mit der Referenz auf den Beitrag zu $ post Objekt global.
  • Die Metadaten werden dann aus der Datenbank abgerufen und in der Datenbank gespeichert $ tes_meta_title und $ tes_meta_description Variablen jeweils. 
  • Als Nächstes haben wir das Meta-Tag definiert, das in die Vorlage eingefügt werden soll Kopf Element.
  • Zum Schluss haken wir die Funktion an 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.

Zusammenfassung

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.