Heute möchte ich Ihnen zeigen, wie Sie benutzerdefinierte Seitenleisten für die Verwendung in Ihren Posts und Seiten hinzufügen. Es kann nützlich sein, verschiedene Widgets entsprechend dem Thema Ihrer Seite oder Ihres Beitrags anzuzeigen.
Wir werden sehen, wie man mit WordPress-Meta-Boxen eine ausgewählte Seitenleiste für einen bestimmten Beitrag speichert und abruft. Benutzerdefinierte Seitenleisten werden im Designbereich hinzugefügt.
Früher habe ich mich mit dem großartigen Widget-Logik-Plugin beschäftigt, um verschiedene Widgets auf verschiedenen Seiten anzuzeigen, aber die Widgets-Seite wurde sehr unscharf und schwierig zu verwalten. Warum also nicht mehrere Seitenleisten verwenden und auswählen, welche in einem bestimmten Beitrag angezeigt werden sollen? Das werde ich in diesem Tutorial behandeln.
In diesem Tutorial werde ich das großartige WordPress-Standarddesign "Twenty Eleven" verwenden, um zu zeigen, wie Sie benutzerdefinierte Seitenleisten in Ihrem Design verwenden.
Zuerst fügen wir eine neue Einstellung in hinzu Darstellung -> Designoptionen. In diesem großartigen Tutorial erfahren Sie, wie Sie Einstellungen hinzufügen.
Öffne das theme-options.php Datei, die sich in befindet twentyeleven / inc und fügen Sie diesen Code am Ende des twentyeleven_theme_options_init ()
Funktion:
add_settings_field ('custom_sidebar', __ ('Benutzerdefinierte Seitenleisten', 'twentyeleven'), 'twentyeleven_settings_field_custom_sidebar', 'theme_options', 'general');
Fügen Sie dann den Standardwert für die Designoptionen am Ende des Fensters einen Standardwert (ein leeres Array) hinzu twentyeleven_get_default_theme_options ()
Funktion:
$ default_theme_options = array ('color_scheme' => 'light', 'link_color' => twentyeleven_get_default_link_color ('light'), 'theme_layout' => 'content-sidebar', 'custom_sidebar' => array ());
Jetzt erstellen wir die Callback-Funktion, die die Anzeige der Einstellung übernimmt.
Fügen Sie jQuery hinzu, um Interaktionen zu handhaben, z. B. das Hinzufügen und Entfernen von Seitenleisten. Dies sind im Wesentlichen einige Listenelemente, die eine verborgene Eingabe enthalten. Diese Listenelemente werden auch aus bereits gespeicherten Seitenleisten generiert.
function twentyeleven_settings_field_custom_sidebar () // Themenoptionen abrufen $ opts = twentyeleven_get_theme_options (); // Ein bisschen jQuery zur Behandlung von Interaktionen (Seitenleisten hinzufügen / entfernen) $ output = ""; $ output. =""; $ output. =""; echo $ ausgabe;"; $ output. ="
"; // Zeige jede benutzerdefinierte Seitenleiste if (isset ($ opts ['custom_sidebar'])) $ i = 0; foreach ($ opts ['custom_sidebar'] als $ sidebar) $ output. ="
"; $ output. ="- ". $ sidebar." ".__ (" delete ", $ themename)."
"; $ i ++; $ output. ="
Fügen Sie schließlich diesen Code in der twentyeleven_theme_options_validate ()
Funktion zur Bereinigung und Validierung der Formulareingabe:
if (isset ($ input ['custom_sidebar'])) $ output ['custom_sidebar'] = $ input ['custom_sidebar'];
An diesem Punkt sollten Sie in der Lage sein, benutzerdefinierte Seitenleisten in Ihrem Design zu verwalten und zu speichern. Erstellen wir beispielsweise eine neue benutzerdefinierte Seitenleiste mit dem Namen "Meine benutzerdefinierte Seitenleiste". Ihre Theme-Options-Seite sollte folgendermaßen aussehen:
Jetzt können wir benutzerdefinierte Seitenleisten hinzufügen, die wir benötigen registrieren Sie können sie auf der Widgets-Verwaltungsseite anzeigen.
Im zwanzig elf Thema geschieht dies im twentyeleven_widgets_init ()
Funktion. Fügen Sie am Ende dieser Funktion Folgendes hinzu:
$ options = twentyeleven_get_theme_options (); if (isset ($ options ['custom_sidebar']) && sizeof ($ options ['custom_sidebar'])> 0) foreach ($ options ['custom_sidebar']) als $ sidebar) register_sidebar (array ('name' =>.) __ ($ sidebar, 'twentyeleven'), 'id' => generateSlug ($ sidebar, 45), 'before_widget' => '", 'before_title' => '',' after_title '=>'
',));
Wir rufen Designoptionen ab, überprüfen, ob mindestens eine benutzerdefinierte Seitenleiste vorhanden ist, und registrieren sie. Wir verwenden eine schnelle Funktion um eine Schnecke erzeugen aus dem Sidebar-Namen, der als Sidebar-ID verwendet werden soll.
Funktion generateSlug ($ satz, $ maxLength) $ result = strtolower ($ satz); $ result = preg_replace ("/ [^ a-z0-9 \ s -] /", "", $ result); $ result = trim (preg_replace ("/ [\ s -] + /", "", $ result))); $ result = trim (substr ($ result, 0, $ maxLength)); $ result = preg_replace ("/ \ s /", "-", $ result); $ Ergebnis zurückgeben;
Gehen Sie jetzt zu Darstellung -> Widgets und Sie sollten unsere neue benutzerdefinierte Seitenleiste sehen.
Jetzt sind unsere benutzerdefinierten Seitenleisten verfügbar. Wir fügen eine Meta-Box hinzu, um eine Liste aller im Post-Bearbeitungsformular verfügbaren Seitenleisten anzuzeigen.
Wenn Sie mit Meta-Boxen nicht vertraut sind, können Sie auf diese Links verweisen:
add_meta_box
auf dem WordPress-CodexNun lasst uns in den Code eintauchen.
Zuerst fügen wir einfach unsere Meta-Boxen hinzu. Wir müssen zwei Meta-Boxen deklarieren, eine für Posts und eine für Seiten. Wir müssen auch zwei Hooks registrieren, einen zum Hinzufügen von Meta-Boxen und den anderen, um sie zu speichern.
Also öffne deine Functions.php Datei und fügen Sie Folgendes hinzu:
/ * Definiere die benutzerdefinierte Box * / add_action ('add_meta_boxes', 'add_sidebar_metabox'); add_action ('save_post', 'save_sidebar_postdata'); / * Fügt der Seitenspalte auf den Bild- und Seitenbearbeitungsfenstern ein Feld hinzu. * / Function add_sidebar_metabox () add_meta_box ('custom_sidebar', __ ('Custom Sidebar', 'twentyeleven'), 'custom_sidebar_callback', 'post', ' Seite '); add_meta_box ('custom_sidebar', __ ('Custom Sidebar', 'twentyeleven'), 'custom_sidebar_callback', 'page', 'side');
Nun lassen Sie uns die erstellen custom_sidebar_callback
Funktion, die das Markup der Meta-Boxen ausgeben soll.
Es gibt mehrere wichtige Schritte in dieser Funktion:
$ wp_registered_sidebars
Variable./ * Gibt den Inhalt der Box aus * / function custom_sidebar_callback ($ post) global $ wp_registered_sidebars; $ custom = get_post_custom ($ post-> ID); if (isset ($ custom ['custom_sidebar'])) $ val = $ custom ['custom_sidebar'] [0]; else $ val = "default"; // Verwendung von nonce zur Überprüfung wp_nonce_field (plugin_basename (__FILE__), 'custom_sidebar_nonce'); // Die tatsächlichen Felder für die Dateneingabe $ output = ''; $ output. = ""; echo $ ausgabe;
Jetzt speichern wir unser Post-Meta. Wieder einige Schritte hier:
/ * Wenn der Beitrag gespeichert ist, werden unsere benutzerdefinierten Daten gespeichert. // Wenn unser Formular nicht gesendet wurde, möchten wir nichts tun, wenn (definiert ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; // Vergewissern Sie sich, dass dies von unserem Bildschirm kam und mit der richtigen Berechtigung, // weil save_post zu anderen Zeitpunkten ausgelöst werden kann, wenn (! wp_verify_nonce ($ _POST ['custom_sidebar_nonce'], plugin_basename (__FILE__))) return; if (! current_user_can ('edit_page', $ post_id)) return; $ data = $ _POST ['custom_sidebar']; update_post_meta ($ post_id, "custom_sidebar", $ data);
Sie sollten dieses Feld jetzt auf der Nachbearbeitungsseite in der rechten Spalte sehen können. Wenn dies nicht der Fall ist, überprüfen Sie, ob das benutzerdefinierte Seitenleistenfeld im Optionsfeld des oberen Bildschirms angezeigt wird.
Jetzt ist alles richtig eingerichtet. Jetzt müssen Sie nur noch unsere Schablonendateien aktualisieren, um benutzerdefinierte Seitenleisten anzeigen zu können.
Lassen Sie uns eine neue Seite erstellen, die auf der basiert Seitenleistenvorlage (im Feld Seitenattribute verfügbar). Diese Vorlage basiert auf der sidebar-page.php Datei. Bearbeiten Sie diese Datei und fügen Sie diese Zeilen oben (unter der kommentierten Kopfzeile der Vorlage) ein:
$ options = get_post_custom (get_the_ID ()); if (isset ($ options ['custom_sidebar'])) $ sidebar_choice = $ options ['custom_sidebar'] [0]; else $ sidebar_choice = "default";
Wir rufen aktuelle Post-Metadaten ab, um die ausgewählte Seitenleiste zu erhalten.
Zu Schalter Ändern Sie zwischen einer benutzerdefinierten und der Standard-Seitenleiste die get_sidebar ()
Rufe am Ende dieser gleichen Datei dazu auf:
if ($ sidebar_choice && $ sidebar_choice! = "default") get_sidebar ("custom"); else get_sidebar ();
Das get_sidebar ($ slug)
ruft nach sidebar-slug.php. Wir müssen also eine Datei mit dem Namen erstellen sidebar-custom.php und füge dies innen hinzu:
$ options = get_post_custom ($ post-> ID); $ sidebar_choice = $ options ['custom_sidebar'] [0]; ?>
Jetzt sollte Ihre Seite die von Ihnen gewählte Seitenleiste anzeigen. Ich habe zum Beispiel zwei Widgets in meiner benutzerdefinierten Seitenleiste hinzugefügt:
Ich werde nicht darauf eingehen, wie man dies auf Posts anwenden kann, da es genau das gleiche Verhalten ist content-single.php Datei zum Verwalten von benutzerdefinierten Seitenleisten.
Das war's Leute! Jetzt können Sie verwenden unbegrenzte Seitenleisten für Ihre Seiten und Beiträge. Dies ist nur eine Lösung unter anderen, aber es ist eine schnell und einfach So können Sie benutzerdefinierte Sidebars implementieren. Zögern Sie nicht, einen Kommentar zu hinterlassen, Ihre Ideen zu teilen und Feedback zu geben!