Es gibt viele Lösungen für dieses Problem. Und jeder von ihnen ist richtig, denke ich. Es hängt davon ab, was Sie wirklich wollen und was für den Benutzer / Administrator dieser Seite am freundlichsten / klarsten ist.
Ich benutze normalerweise 3 Wege, um dies zu lösen. Welchen von ihnen habe ich gewählt? Das hängt von der Situation ab. Manchmal benutze ich 2 davon gleichzeitig.
1. Statische Titelseitenlösung.
Wenn ich eine statische Seite als Startseite festlegen kann, mache ich das. Erstellen Sie dann eine front-page.php
Seitenvorlage und definieren Sie damit, wie die Startseite / Startseite aussehen soll.
Um einige benutzerdefinierte Felder auf dieser Seite anzuzeigen / bearbeiten zu können, verwende ich das Plugin Erweiterte benutzerdefinierte Felder . Hier können Sie benutzerdefinierte Felder definieren, die für die Startseite (und vieles mehr) festgelegt wurden. Dann verwende ich eine front-page.php
Vorlage, um diese benutzerdefinierten Feldwerte dort anzuzeigen, wo sie angezeigt werden sollen.
Wenn einige dieser Werte auf jeder Seite wiederholt werden sollen (in der Fußzeile, in der Kopfzeile usw.), erhalte ich diese Werte von der Startseite wie folgt:
$cf_value = get_post_meta( get_option('page_on_front'), '<CUSTOM FIELD NAME>', true );
Es ist eine sehr einfache und saubere Lösung, wenn es nicht viele Felder gibt, die auf anderen Seiten wiederholt werden sollten. Es ist benutzerfreundlich, denke ich. Wenn Sie die Startseite bearbeiten möchten, müssen Sie dies nur tun - Sie können alles im Startseiten-Editor bearbeiten.
2. Universelle Lösung.
Die andere Lösung, die ich verwende, besteht darin, einige Themenoptionen zu definieren. Es ist viel besser, wenn Sie das Erscheinungsbild der Seite (Logo, Hintergründe usw.) und nicht nur den Inhalt definieren möchten (insbesondere, wenn Sie den Inhalt nur einer Seite meinen).
Normalerweise verwende ich dazu das OptionTree- Plugin. Aber es ist nicht so schwer, das alleine zu machen.
Die Idee, dass Sie den Inhalt der Seite in Themenoptionen bearbeiten sollten, gefällt mir nicht wirklich, daher verwende ich diese Lösung nicht sehr oft.
3. Wenn dieser Inhalt immer auf anderen Seiten wiederholt wird
Manchmal müssen Sie auf jeder Seite (oder den meisten davon) und nicht nur auf der Startseite einige Werte anzeigen. Dann besteht die "schönste" Lösung meiner Meinung nach darin, diese Bereiche als Seitenleisten zu definieren und dem Benutzer zu ermöglichen, sie mithilfe von Widgets zu bearbeiten.
Wenn dieser sich wiederholende Inhalt nur eine Zeile ist (Copyright-Infozeile in der Fußzeile usw.) und nicht zu oft geändert wird, würde ich wahrscheinlich Lösung 1 verwenden. Wenn er jedoch komplexer ist oder häufig geändert wird, ist dies die Lösung am besten, denke ich.
front-page.php
wird in diesem Fall aufgrund der Vorlagenhierarchie mehr angezeigt.Ich würde vorschlagen, eine Metabox für die home.php-Seitenvorlage zu erstellen. Dies ist mit dem ACF-Plugin (Advanced Custom Fields) problemlos möglich. Sie können sogar "ACF Lite" verwenden, wenn Sie diese in Ihr Thema integrieren möchten, anstatt das Plugin zu verwenden. Hier ist eine schnelle und einfache Möglichkeit, genau das zu implementieren, wonach Sie suchen.
Ich konnte die Metabox erstellen und in weniger als 5 Minuten eine benutzerdefinierte Ausgabe in der Vorlagendatei erstellen. Hier ist der Code, den ich verwendet habe, und der schrittweise Prozess.
Fügen Sie den Codeblock "functions.php" zur Datei "function.php" Ihres aktiven Themas hinzu.
Gehen Sie zur Startseite (diese Seite muss die Vorlagendatei home.php verwenden. Seite bearbeiten-> Attribute-> Vorlagen-Dropdown-Liste).
Gehen Sie zu Ihrer Vorlagendatei "home.php" und fügen Sie den folgenden Code hinzu, um den Inhalt der benutzerdefinierten Metabox anzuzeigen, die in diesem Fall den "Namen" "promo_text" erhält.
Hinweis: get_field ist eine Funktion des ACF-Plugins. Wenn Sie die integrierte WP-Funktion bevorzugen, können Sie Folgendes verwenden: "get_post_meta ($ post_id, $ key, $ single);" stattdessen. Hier ist ein Beispiel dafür.
So sieht es beim Bearbeiten der Startseite aus: Link "Größeres Bild"
Jetzt sehen Sie die Metabox. Beachten Sie, dass Sie dies problemlos ohne das Plugin tun können. Sie müssen lediglich den Plugin-Ordner in Ihren Themenordner aufnehmen und der Datei functions.php Ihres aktiven Themas ein include () hinzufügen.
Ich kann dieses Plugin nur empfehlen ... es ist sehr intuitiv und hat viele Dokumentationen. Wenn Sie dieses Plugin und var_dump () verwenden, können Sie alles sehr schnell herausfinden.
Ich hoffe das hilft!
quelle
Es ist schwierig, anhand Ihrer Frage genau zu sagen, was Sie tun. Wenn Sie jedoch die Options-API verwenden , wird
get_option
ein zweiter Parameter für die Standardwerte akzeptiert. Aus dem Kodex:Wenn Sie die API für Themenanpassungen verwenden , akzeptiert
get_theme_mod
likeget_option
auch einen zweiten Parameter für Ihre Standardwerte.Bei beiden Optionen müssen Sie die Backend-Oberfläche erstellen. Wenn Sie die Options-API verwenden, erstellen Sie eine Konfigurationsseite
add_menu_page
und /add_submenu_page
oder eine dieser verwandten Funktionen .Wenn Sie den Theme Customizer verwenden und ich nicht sicher bin, ob dies zu Ihrem Projekt passt, gibt es ganz andere Funktionen und Techniken .
quelle
get_option
oderget_theme_mod
in diese Vorlage schreiben .Wenn ich Ihre Frage richtig verstehe, möchten Sie ein Themenoptionsfeld erstellen, damit ein WordPress-Administrator. kann (zum Beispiel) "Hallo Welt!" Klicken Sie in einem Textfeld auf Änderungen speichern und am vorderen Ende der Website auf "Hallo Welt!". wird überall dort angezeigt, wo Sie es in Ihrer Vorlage aufrufen möchten.
Sie können dies mit der Options-API tun, über die s_ha_dum gesprochen hat, aber ich vermute, wenn Sie der Meinung sind, dass seine Antwort nicht genügend Details enthält, meinen Sie wahrscheinlich, dass sie komplizierter ist, als Sie es sich erhofft hatten.
Mein Rat an Sie wäre daher, das Optionsbaum- Plugin zu installieren, mit dem Sie schnell und einfach ein Bedienfeld für Themenoptionen (im Menü Darstellung) mit einem Textfeld erstellen können, in dem steht: "Welchen Werbetext möchten Sie auf der Startseite?" ". Dann müssen Sie nur noch den Wert dieser Option in Ihrer home.php-Vorlage mit der Option Tree-Funktion aufrufen.
Hoffe das hilft!
quelle
Wenn ich an Ihrer Stelle wäre, hätte ich das benutzerdefinierte Wort zur Admin- / Konfigurationsseite des Themas hinzugefügt. Das wäre für mich einfacher, weil:
Der Weg in die Zukunft wäre, einen neuen Haken hinzuzufügen. Sie können entweder mit meiner bevorzugten Art und Weise gehen hier oder die allgemeine Plugin Haken Art und Weise detailliert hier
quelle
Die Art und Weise, wie ich es angehen würde (und ich habe gerade etwas Ähnliches), ist die folgende:
Erstellen Sie einen neuen Menüeintrag entweder im Einstellungsmenü (Einstellungen -> Einstellungen für die Startseite) oder erstellen Sie einen neuen Menüpunkt für die Startseite, z. B. unter Kommentare oder am Ende Ihres Menüs oder wo immer Sie möchten. Erstellen Sie dann in diesem neuen Menüpunkt Ihre Seite.
Auf der in Schritt 1 genannten Seite erstellen Sie alle Ihre Administratoreinstellungen für die Startseite (aktuelle und zukünftige Einstellungen).
Stellen Sie sicher, dass die Seite (und ihre Menü-Links) nur Administratoren über eine Rollenprüfung zur Verfügung stehen
Wenn Sie möchten, können Sie Ihre obige Lösung als Teil eines Plugins erstellen, das speziell die Seite mit den zusätzlichen Einstellungen erstellt, und sie vom Thema entfernen. Denn dies ist kein themenbezogenes Problem, sondern eine Anpassung des Administrationsbereichs.
Wie ich bereits erwähnt habe, mache ich etwas in diese Richtung und habe ein Plugin erstellt. Dies hilft mir in Zukunft. Wenn ich mein Thema ändern möchte, muss ich nicht darüber nachdenken, was entfernt und in meinem Code gespeichert werden muss.
Hoffe das hilft.
quelle