Die WordPress-Einstellungs-API, Teil 2 Abschnitte, Felder und Einstellungen

Bei der Entwicklung von WordPress-Themes und Plugins gibt es verschiedene Möglichkeiten, wie Entwickler Menüs, Optionen und Überprüfungsfunktionen erstellen. Die Sache ist, dass es wirklich nur eine Möglichkeit gibt, dies in WordPress richtig zu machen: die Einstellungs-API.

Diese Serie soll der endgültige Leitfaden sein, um die Vorteile der WordPress-Einstellungs-API zu nutzen, damit Sie einen einzigen Bezugspunkt für die ordnungsgemäße Entwicklung Ihrer Designs und Plugins haben.

Im ersten Artikel dieser Serie haben wir uns eingehend mit der Einstellungs-API beschäftigt und warum dies wichtig ist. Hier werden wir uns näher mit der API beschäftigen und erfahren, wie wir alles nutzen können, was sie bietet.

Wir werden einen Blick auf die grundlegenden Einheiten der WordPress-Optionen - Abschnitte, Felder und Einstellungen - sowie auf die Einbindung in das native WordPress-Dashboard werfen.


Zu Abschnitten, Feldern und Einstellungen

Bevor wir mit dem Schreiben von Code beginnen, ist es wichtig, die drei Hauptkomponenten der WordPress-Einstellungs-API zu verstehen.

  1. Felder sind individuelle Optionen, die auf den Menüseiten angezeigt werden. Die Felder entsprechen den tatsächlichen Elementen auf dem Bildschirm. Das heißt, ein Feld wird über ein Textfeld, ein Optionsfeld, ein Kontrollkästchen usw. verwaltet. Die Felder repräsentieren einen in der WordPress-Datenbank gespeicherten Wert.
  2. Abschnitte sind eine logische Gruppierung von Feldern. Wenn Sie mit mehreren Feldern arbeiten, werden Sie wahrscheinlich zusammengehörige Optionen zusammenfassen - Abschnitte repräsentieren diese Gruppierung. Wenn Ihre Arbeit mehrere Administrationsseiten umfasst, entspricht jeder Abschnitt häufig einer eigenen Menüseite (Sie können sie jedoch auch vorhandenen Abschnitten hinzufügen.).
  3. die Einstellungen werden registriert, nachdem Sie sowohl Felder als auch Abschnitte definiert haben. Stellen Sie sich Einstellungen als eine Kombination aus dem Feld und dem Abschnitt vor, zu dem es gehört.

Machen Sie sich an diesem Punkt keine Sorgen, wenn Sie sich bezüglich der Hauptkomponenten noch nicht klar sind. Wir werden uns jede Komponente eingehend ansehen und einen Beispiel-Quellcode verwenden, der alles miteinander verbindet.


Eine Sandbox für unsere Einstellungen

Um mit der Programmierung der Einstellungen-API zu beginnen, richten Sie ein grundlegendes Design ein, das in diesem Artikel und in der restlichen Serie verwendet werden kann. Der gesamte Quellcode ist auch auf GitHub verfügbar.

Navigieren Sie in Ihrer lokalen Installation von WordPress zum Verzeichnis "themes", erstellen Sie ein neues leeres Verzeichnis und nennen Sie es "WordPress-Settings-Sandbox". Fügen Sie die folgenden drei Dateien hinzu:

  • style.css - Dies ist das Stylesheet für das Design. Es enthält alle Metainformationen für das Thema. Es wird von WordPress benötigt
  • index.php - Dies ist die Standardvorlage für das Design. Es kann zunächst leer sein. Es wird von WordPress benötigt
  • Functions.php - Hier werden wir den größten Teil unserer Arbeit erledigen. Wir werden dies im gesamten Tutorial ausfüllen

Fügen Sie style.css den folgenden Code hinzu:

/ * Name des Themas: WordPress-Einstellungen Sandbox-Design-URI: YOUR URI Beschreibung: Ein einfaches Design zum Präsentieren der WordPress-Einstellungs-API. Autor: YOUR NAME Autor URI: YOUR WEBSITE Version: 0.1 Lizenz: Copyright 2012 IHR NAME (IHRE EMAIL-ADRESSE) Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, Version 2, wie von der Free Software Foundation veröffentlicht, weitergeben und / oder ändern. Dieses Programm wird in der Hoffnung verteilt, dass es nützlich ist, jedoch OHNE JEDE GARANTIE; sogar ohne die implizite Garantie der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Informationen finden Sie in der GNU General Public License. Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Wenn nicht, schreiben Sie an die Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * /

Fügen Sie anschließend folgenden Code zu index.php hinzu:

   Das vollständige Handbuch zur Einstellungs-API | Sandkasten-Thema   

Sandkasten-Header

Dies ist ein Themeninhalt.

© Alle Rechte vorbehalten.

Beachten Sie, dass das obige Markup außerordentlich einfach ist nicht empfehlen, dies als Grundlage für die Themenentwicklung zu verwenden. Es ist auf diese Artikelserie zugeschnitten und stellt lediglich die Mittel bereit, mit denen wir Werte aus der Einstellungs-API lesen können.

In dem Themes Wenn Sie im Administrationsbildschirm die Seite aktualisieren, wird das neue Sandbox-Design angezeigt. Fahren Sie fort und aktivieren Sie es.

An diesem Punkt können wir loslegen.


Unsere ersten Optionen

In der Indexvorlage oben haben wir drei spezifische Inhaltsbereiche definiert: Kopfzeile, Inhalt und Fußzeile. Erstellen Sie mithilfe der Einstellungs-API einen Abschnitt "Allgemein" mit drei Feldern, von denen jedes einem der gerade definierten Inhaltsbereiche entspricht.

Bevor ich einen Code schreibe, finde ich es immer hilfreich, genau aufzuschreiben, was ich tun muss. In diesem Fall müssen wir Folgendes tun:

  • Definieren Sie einen Abschnitt, in dem jedes Feld gruppiert wird
  • Fügen Sie dem oben definierten Abschnitt drei Felder hinzu - eines für jeden Inhaltsbereich
  • Registrieren Sie die Einstellungen mit der WordPress-API.

Um massive Codeblöcke zu vermeiden und um sicherzustellen, dass wir alle unsere Grundlagen abdecken, werden wir jeden der oben genannten Punkte Punkt für Punkt betrachten.

Abschnitt erstellen

Um den Abschnitt "Allgemein" zu finden, müssen Sie die Funktion add_settings_section der Einstellungs-API verwenden. Gemäß dem WordPress-Codex sind für add_settings_section drei Argumente erforderlich:

  • ICH WÜRDE - Dies ist die eindeutige Kennung für diesen bestimmten Abschnitt. Beachten Sie, dass dies der Wert ist, der zum Registrieren jedes Felds in diesem Abschnitt verwendet wird. Fühlen Sie sich frei, es zu nennen, was Sie wollen, aber ich empfehle es aus Gründen der Lesbarkeit.
  • Titel - Dieser Wert wird oben auf der Seite im WordPress-Dashboard angezeigt, wenn Benutzer mit Ihren Optionen arbeiten.
  • Ruf zurück - Dies ist der Name einer Funktion, die wir definieren werden, um Text für die Funktion auf dem Bildschirm darzustellen. Es kann für eine Vielzahl von Funktionen verwendet werden. Im einfachsten Fall können Sie Anweisungen oder eine Beschreibung für Ihre Optionsseite angeben.
  • Seite - Dieser Wert wird verwendet, um WordPress mitzuteilen, auf welcher Seite Ihre Optionen angezeigt werden sollen. In einem zukünftigen Artikel werden wir dies verwenden, um Optionen zu unseren eigenen benutzerdefinierten Seiten hinzuzufügen. Im Moment fügen wir dies dem Bestehenden hinzu Allgemeine Optionen Seite.

Lasst uns damit fortfahren und unseren Abschnitt definieren. Schauen Sie sich den folgenden kommentierten Code an. Wir fügen dies in unsere Datei "functions.php" ein.

Ein Wort zu den Codeausschnitten dieser Serie: Kopieren Sie diesen Code nicht einfach. Nehmen Sie sich Zeit, um jede Zeile zu lesen, um zu sehen, wie die Argumente mit jeder API-Funktion übereinstimmen, die wir behandeln, und folgen Sie den entsprechenden Kommentaren, um sicherzustellen, dass Sie den Überblick über das bekommen, was wir tun:

Wählen Sie aus, welche Inhaltsbereiche Sie anzeigen möchten.

'; // end sandbox_general_options_callback?>

Sinn ergeben? Im Allgemeinen sieht es nicht nach viel aus, sondern navigiert zu Ihrem die Einstellungen Menü und klicken Sie auf Allgemeines. Scrollen Sie zum Ende der Seite und Sie sollten den neuen Abschnitt mit den Optionen sehen.

Sie können diesen Abschnitt zu jeder der Seiten unter hinzufügen die Einstellungen Speisekarte. Im obigen Beispiel haben wir "general" als letzten Parameter an add_settings_section übergeben. Wenn Sie ihn jedoch einer anderen Seite hinzufügen möchten, können Sie einen anderen Seitentitel angeben. Hier ist eine Referenz für jeden die Einstellungen Seiten und den entsprechenden Schlüssel:

  • Allgemein, "Allgemein"
  • Schreiben, "Schreiben"
  • Lesen, "Lesen"
  • Diskussion "Diskussion"
  • Medien, "Medien"
  • Datenschutz, "Datenschutz"
  • Permalinks, "Permalink"

Felder hinzufügen

Nachdem wir nun einen Abschnitt definiert haben, können wir einige Optionen einführen. Wir möchten Sie daran erinnern, dass wir in unserer Indexvorlage drei spezifische Containerelemente definiert haben: Kopfzeile, Inhalt und Fußzeile.

Obwohl wir im Laufe dieser Serie weitere Optionen einführen werden, werden wir heute eine Möglichkeit vorstellen, die Sichtbarkeit jedes der oben genannten Elemente zu ändern.

Ähnlich wie bei den Einstellungen möchte ich genau auflisten, was wir tun müssen, bevor wir Code schreiben. Da werden wir jeden Inhaltsbereich umschalten…

  • Wir benötigen drei Optionen - eine für jeden Inhaltsbereich
  • Da wir die Sichtbarkeit umschalten, können wir ein Kontrollkästchen als Oberflächenelement verwenden

An dieser Stelle können wir das erste Einstellungsfeld einführen. Dazu verwenden wir die Funktion add_settings_field. Diese Funktion benötigt sechs Parameter (vier erforderlich, zwei optional). Sie sind wie folgt:

  • ICH WÜRDE - Die ID des tatsächlichen Feldes. Dies wird verwendet, um den Wert im gesamten Thema zu speichern und abzurufen. Ich empfehle, diesen Namen sinnvoll zu nennen, um die Lesbarkeit Ihres Codes zu verbessern.
  • Titel - Dieser Wert wendet einen Titel für die Feldoption auf der Verwaltungsseite an. Dies sollte klar sein, da es von Endbenutzern gelesen wird.
  • Ruf zurück - Dies ist der Name der Funktion, mit der das tatsächliche Oberflächenelement gerendert wird, mit dem Benutzer interagieren.
  • Seite - Ähnlich wie in dem Abschnitt, den wir umrissen haben, gibt dieser Parameter an, auf welcher Seite sich diese Option befinden soll. Wenn Sie nur eine einzige Option einführen, können Sie sie zu einer vorhandenen Seite hinzufügen, anstatt zu einem von Ihnen definierten Abschnitt.
  • Sektion - Dies bezieht sich auf den Abschnitt, den Sie mit der Funktion add_settings_section erstellt haben. Dieser Wert ist die ID, die Sie beim Erstellen Ihres Abschnitts angegeben haben. Dies ist ein optionaler Parameter.
  • Argumente - Dies ist ein Array von Argumenten, die an die Rückruffunktion übergeben werden. Dies ist nützlich, wenn Sie zusätzliche Informationen zum Rendern Ihres Optionselements hinzufügen möchten. Dies ist ein optionaler Parameter.

Nachdem dies gesagt ist, wollen wir unser erstes Einstellfeld definieren. Insbesondere wird eine Option eingeführt, um die Sichtbarkeit der Kopfzeile umzuschalten.

Zuerst rufen wir add_settings_field direkt unter dem Funktionsaufruf add_settings_section in der Initialisierungsfunktion auf, die wir im ersten Teil des Lernprogramms geschrieben haben. Überprüfen Sie jede Zeile und die Kommentare für jede Option:

// Als Nächstes werden wir die Felder zum Umschalten der Sichtbarkeit von Inhaltselementen einführen. add_settings_field ('show_header', // ID, mit der das Feld im gesamten Thema 'Header' identifiziert wird, // die Bezeichnung links vom Optionsschnittstellenelement 'sandbox_toggle_header_callback') // der Name der Funktion, die für die Wiedergabe der Optionsschnittstelle verantwortlich ist 'general', // Die Seite, auf der diese Option angezeigt wird 'general_settings_section', // Der Name des Abschnitts, zu dem dieses Feld gehört (// Das Array von Argumenten, die an den Rückruf übergeben werden sollen. In diesem Fall eine Beschreibung. 'Aktivieren Sie diese Einstellung, um die Kopfzeile anzuzeigen.'));

Als Nächstes definieren wir den Rückruf, auf den in der obigen Funktion verwiesen wird. Dieser Rückruf wird zum Rendern des Kontrollkästchens und der Beschreibung auf der Verwaltungsseite verwendet:

/ ** * Diese Funktion rendert die Oberflächenelemente zum Umschalten der Sichtbarkeit des Kopfelements. * * Es akzeptiert ein Array von Argumenten und erwartet, dass das erste Element im Array die Beschreibung * ist, die neben dem Kontrollkästchen angezeigt wird. * / function sandbox_toggle_header_callback ($ args) // Beachten Sie, dass die ID und das Namensattribut des Elements mit der ID im Aufruf von add_settings_field $ html = 'übereinstimmen sollten.'; // Hier nehmen wir das erste Argument des Arrays und fügen es einem Label neben der Checkbox $ html. = 'Hinzu.'; echo $ html;  // end sandbox_toggle_header_callback

Beachten Sie bei den Ankreuzfeldern die Kommentare, machen Sie sich jedoch nicht zu viele Gedanken über einige Attribute, die Sie nicht kennen (z. B. einen Aufruf der Funktion checked ()). Später in dieser Serie werden wir uns jedes Eingabeelement und die entsprechenden Hilfsfunktionen ansehen.

Inzwischen sollte Ihre functions.php-Datei so aussehen:

Wählen Sie aus, welche Inhaltsbereiche Sie anzeigen möchten.

'; // end sandbox_general_options_callback / * ----------------------------------- ----------------------------- * * Feldrückrufe * ---------------- -------------------------------------------------- ------ * / / ** * Diese Funktion rendert die Oberflächenelemente zum Umschalten der Sichtbarkeit des Headerelements. * * Es akzeptiert ein Array von Argumenten und erwartet, dass das erste Element im Array die Beschreibung * ist, die neben dem Kontrollkästchen angezeigt wird. * / function sandbox_toggle_header_callback ($ args) // Beachten Sie, dass die ID und das Namensattribut des Elements mit denen der ID im Aufruf von add_settings_field $ html = 'übereinstimmen.'; // Hier nehmen wir das erste Argument des Arrays und fügen es einem Label neben der Checkbox $ html. = 'Hinzu.'; echo $ html; // end sandbox_toggle_header_callback?>

Aktualisieren Sie an dieser Stelle die Allgemeine Einstellungen Seite. Sie sollten Ihre Checkbox mit der Bezeichnung "Header" und einer Beschreibung neben der Checkbox sehen.

Leider wird der Wert noch nicht in der Datenbank gespeichert.

Registrieren unserer Einstellungen

Damit unsere Felder tatsächlich in der Datenbank gespeichert werden können, müssen wir sie bei WordPress registrieren. Dies ist relativ einfach - wir müssen nur die Funktion register_setting nutzen.

Diese Funktion akzeptiert drei Argumente (zwei erforderlich, eines optional):

  • Optionsgruppe - Dies ist eigentlich der Name der Optionsgruppe. Dies kann entweder eine vorhandene Gruppe von Optionen sein, die von WordPress bereitgestellt wird, oder eine ID, die wir beim Erstellen unseres eigenen Einstellungsabschnitts angegeben haben. Dieses Argument ist erforderlich.
  • Name der Option - Dies ist die ID des Feldes, das wir registrieren. In unserem Fall registrieren wir nur ein einzelnes Feld, aber wenn wir mehrere Felder registrieren, müssen wir diese Funktion für jedes Feld, das wir registrieren, aufrufen. Wir werden in Kürze mehr darüber erfahren. Dieses Argument ist erforderlich.
  • Ruf zurück - Dieses Argument erfordert den Namen einer Funktion, die vor dem Speichern der Daten in der Datenbank aufgerufen wird. Dieses Argument liegt außerhalb des Rahmens dieses Artikels, aber wir werden es noch vor Ende der Serie besuchen. Dieses Argument ist optional.

An dieser Stelle registrieren wir die gerade erstellte Einstellung. Schauen Sie sich den Code unten an. Fügen Sie diese Codezeile direkt unter dem Aufruf add_settings_field in der Initialisierungsfunktion hinzu, die wir zuvor im Artikel definiert haben. Es ist wohl am einfachsten, aus allen Ausschnitten in diesem Artikel zu folgen:

// Zum Schluss registrieren wir die Felder mit WordPress. Register_setting ('general', 'show_header');

Probieren Sie es aus - Aktivieren Sie das Kontrollkästchen, klicken Sie auf "Änderungen speichern" und beachten Sie, dass sich die Option geändert hat, wenn die Seite aktualisiert wird. Deaktivieren Sie das Kontrollkästchen, speichern Sie und sehen Sie, wie es gespeichert wird.

Leicht genug, richtig?

Hinzufügen der letzten zwei Optionen

Wir müssen noch die Optionen zum Umschalten der Sichtbarkeit des Inhaltsbereichs und des Fußzeilenbereichs einführen. Es ist fast genauso, wie wir die Option zum Umschalten des Headers einrichten.

Definieren wir zunächst das Feld für die Anzeige des Inhaltsbereichs. Dies erfolgt unter dem ersten Aufruf von add_settings_field:

add_settings_field ('show_content', 'content', 'sandbox_toggle_content_callback', 'general', 'general_settings_section', array ('Aktivieren Sie diese Einstellung, um den Inhalt anzuzeigen.'));

Und lass uns die Callback-Funktion einrichten:

Funktion sandbox_toggle_content_callback ($ args) $ html = ''; $ html. = ''; echo $ html;  // end sandbox_toggle_content_callback

Als Nächstes definieren wir das Feld für die Anzeige des Fußzeilenbereichs:

add_settings_field ('show_footer', 'Footer', 'sandbox_toggle_footer_callback', 'general', 'general_settings_section', array ('Aktivieren Sie diese Einstellung, um die Fußzeile anzuzeigen.'));

Und richten Sie auch den Rückruf für dieses Feld ein:

Funktion sandbox_toggle_footer_callback ($ args) $ html = ''; $ html. = ''; echo $ html;  // end sandbox_toggle_footer_callback

Schließlich lassen Sie uns diese beiden neuen Felder mit WordPress registrieren. Diese beiden Funktionsaufrufe befinden sich am Ende der Initialisierungsfunktion, die wir zuvor im Artikel definiert haben.

register_setting ('general', 'show_content'); register_setting ('general', 'show_footer');

Die endgültige Version von functions.php sollte folgendermaßen aussehen:

Wählen Sie aus, welche Inhaltsbereiche Sie anzeigen möchten.

'; // end sandbox_general_options_callback / * ----------------------------------- ----------------------------- * * Feldrückrufe * ---------------- -------------------------------------------------- ------ * / / ** * Diese Funktion rendert die Oberflächenelemente zum Umschalten der Sichtbarkeit des Headerelements. * * Es akzeptiert ein Array von Argumenten und erwartet, dass das erste Element im Array die Beschreibung * ist, die neben dem Kontrollkästchen angezeigt wird. * / function sandbox_toggle_header_callback ($ args) // Beachten Sie, dass die ID und das Namensattribut des Elements mit denen der ID im Aufruf von add_settings_field $ html = 'übereinstimmen.'; // Hier nehmen wir das erste Argument des Arrays und fügen es einem Label neben der Checkbox $ html. = 'Hinzu.'; echo $ html; // end sandbox_toggle_header_callback-Funktion sandbox_toggle_content_callback ($ args) $ html = ''; $ html. = ''; echo $ html; // end sandbox_toggle_content_callback-Funktion sandbox_toggle_footer_callback ($ args) $ html = ''; $ html. = ''; echo $ html; // end sandbox_toggle_footer_callback?>

Aktualisieren Sie jetzt die Allgemeine Einstellungen Seite und beachten Sie, dass Sie alle drei voll funktionsfähigen Kontrollkästchen haben.


Lesen der API

Was nützen die Optionen, wenn wir sie während unseres Themas oder unseres Plugins nicht nutzen können? Wir müssen die Werte lesen können, um unsere neuen Optionen richtig verwalten zu können.

Dazu müssen wir die Funktion get_option verwenden. Diese Funktion akzeptiert zwei Argumente (eins erforderlich, eins optional):

  • Options-ID - Dieses Argument ist die ID des Felds für den Wert, den Sie abzurufen versuchen. Dieses Argument ist erforderlich.
  • Standardoption - Dies ist der Wert, den die Funktion zurückgibt, wenn die Funktion einen leeren Wert zurückgibt (z. B. wenn die Option nicht in der Datenbank gefunden wird). Dieses Argument ist optional.

Versuchen wir zunächst, die Sichtbarkeit der Kopfzeile zu ändern. Suchen Sie in der Indexvorlage, die wir zuvor in diesem Artikel erstellt haben, das Element mit der ID der Kopfzeile. Es sollte so aussehen:

Sandkasten-Header

Als Nächstes rufen wir get_option im Kontext einer Bedingung auf. Wenn die Bedingung als wahr ausgewertet wird (dh, die Option wurde in der Option aktiviert.) Allgemeine Einstellungen Seite), dann wird das Element angezeigt; Andernfalls wird das Element nicht angezeigt.

 

Sandkasten-Header

Danach hoffe ich auf die Allgemeine Einstellungen Aktivieren Sie auf dieser Seite die Option zum Ausblenden des Header-Elements und aktualisieren Sie die Startseite. Das Header-Element sollte nicht mehr angezeigt werden.

An dieser Stelle müssen Sie den Vorgang auch für das Inhalts- und das Fußzeilenelement wiederholen. Wir müssen die Inhalts- und Fußzeilenelemente mit Bedingungen umschließen, die das Ergebnis von get_option-Aufrufen auswerten.

Schau mal:

 

Dies ist ein Themeninhalt.

© Alle Rechte vorbehalten.

Besuchen Sie die Allgemeine Einstellungen Umschalten der Kontrollkästchen und Aktualisieren der Designseite. Ihre Elemente sollten unabhängig voneinander umschalten.


Next Up, Menüseiten

Das war es fürs Erste! Wir haben uns alle Funktionen angesehen, die zum Einfügen neuer Abschnitte, Felder und Einstellungen in WordPress erforderlich sind. Natürlich gibt es noch viel mehr zu berichten.

Im nächsten Artikel erfahren Sie, wie Sie benutzerdefinierte Menüelemente zum WordPress-Menü hinzufügen und wie wir unsere eigenen Seiten in das WordPress-Dashboard einführen können.


Ähnliche Resourcen

Wir haben in diesem Artikel viel Material behandelt. Hier finden Sie eine Referenz für alles, was wir in diesem Artikel verwendet haben.

  • Einführung in die Einstellungs-API
  • add_settings_section
  • add_settings_field
  • register_setting
  • get_option
  • Arbeitsbeispiel auf GitHub