Die Trennung der Funktionalität von der Präsentation ist eine bewährte Vorgehensweise bei der Entwicklung von WordPress-Designs. In diesem Beitrag erfahren Sie, wie Sie dies tun können, indem Sie Ihren Benutzern ein Plug-in-Paket für Ihre Designs zur Verfügung stellen.
Wir verkaufen seit über vier Jahren WordPress-Themes bei ThemeForest und haben in dieser Zeit viele Dinge gelernt, die uns auf dem Markt zum Erfolg verhelfen. Einer der Schlüsselaspekte einer erfolgreichen Themenentwicklung ist die „korrekte Logik der Themenentwicklung“..
Der Hauptvorteil der Trennung der Entwicklungslogik liegt in der Produktionsgeschwindigkeit: Je schneller Sie qualitativ hochwertige Themen erstellen, desto mehr Einkommen können Sie generieren. Das Beibehalten der Funktionalität in einem separaten Plug-in ist auch bei Updates hilfreich. Stellen Sie sich vor, Sie haben zehn Themen in ThemeForest und möchten neue Funktionen als Update hinzufügen. Wenn Sie alle Funktionen in einem einzigen Plugin haben, müssen Sie das Update nur einmalig durchführen. Andernfalls wird ein kleines Update langsam und möglicherweise schmerzhaft.
Wenn Sie also mächtige Themen erstellen und dabei mehr Geld verdienen möchten, respektieren Sie das WordPress-Plugin und das Themensystem.
Welche Art von Funktionalität kann ein Premium-Thema enthalten? Welche Dinge sollten wir in ein separates Plugin ziehen? Hier ist eine Liste der wichtigsten Komponenten, die wir normalerweise von Themendateien trennen:
In diesem Beitrag werden wir nicht detailliert beschreiben, wie die Komponenten selbst erstellt werden, aber wir werden erklären, wie sie alle in ein Addons-Plugin gepackt werden.
Gehen Sie zu Ihrem wp-content> plugins und erstellen Sie einen leeren Ordner mit dem Namen Ihres gepackten Plugins. Wir empfehlen, einen selbsterklärenden Namen zu verwenden. Unser Addons-Plugin wird beispielsweise als "Ninzio-Addons" bezeichnet (Ninzio ist der Name unseres Unternehmens)..
Wichtig: Verwenden Sie keinen Unterstrich im Ordnernamen! Verwenden Sie bei Bedarf einen Strich.
Als nächstes erstellen Sie in diesem Plugin-Ordner eine PHP-Datei mit demselben Namen wie Ihr Ordner. In unserem Beispiel wäre das "ninzio-addons.php". Wieder bitte keine Unterstriche. Öffnen Sie diese Datei und fügen Sie den folgenden DocBlock-Header-Kommentar hinzu:
/ ** * Plugin-Name: Ihr Plugin-Name * Plugin-URI: Ihre Plugin-URL * Text Domain: Text-Domain * Domänenpfad: / languages / * Beschreibung: Kurze Beschreibung des Plugins * Autor: Name des Autors * Version: 1.0.0 * Autor URI: Autor uri * /
Sehen wir uns die Details an, die wir hier hinzugefügt haben:
Nachdem Sie den Plug-In-Ordner für Add-Ins und die Hauptdatei erstellt haben, müssen Sie unser Plug-In konfigurieren.
Fügen Sie in der Hauptplugin-Datei nach dem Header-Kommentar diesen Ausschnitt ein:
if (! definiert ('ABSPATH')) exit; // Beenden, wenn direkt darauf zugegriffen wird
Dies ist aus Sicherheitsgründen; es blockiert den direkten Zugriff auf die Plugin-Datei.
Gleich danach fügen Sie diesen Code hinzu:
function your_addons_load_plugin_textdomain () load_plugin_textdomain ('ninzio-addons', false, dirname (plugin_basename (__ FILE__)). '/ languages /'); add_action ('plugins_loaded', 'your_addons_load_plugin_textdomain');
Hier laden wir unser Plugin textdomain - stellen Sie sicher, dass der Funktionsname korrekt ist. Für die Benennung von Funktionen empfehlen wir, selbstbeschreibende Namen mit einem Präfix Ihres Plugins zu verwenden. Zum Beispiel ninzio_addons
. Und da dies eine PHP-Funktion ist, können wir anstelle von Bindestrichen Unterstriche verwenden.
Stellen Sie sicher, dass Sie beim Kopieren oder Eingeben der Funktion load_plugin_textdomain genau sind. Geben Sie für den Domänenparameter die exakte Textdomäne ein, die wir zuvor definiert haben. Geben Sie für den relativen Pfadparameter des Plugins den Pfad zu dem Ordner Sprachen ein, den Sie zuvor erstellt haben.
Nun definieren wir unseren Plugin-Verzeichnispfad. fügen Sie diesen Code hinzu:
define ('your_addons', plugin_dir_path (__FILE__));
Hier benutzen wir deine_addons
als Plugin-Verzeichnispfad. So weit, ist es gut; Wir haben unser Plugin erstellt, jetzt ist es an der Zeit, es mit benutzerdefinierten Funktionen zu füllen.
Wir werden diesen Schritt nicht verwenden, um zu beschreiben, wie Sie ein Optionsfeld für ein Design erstellen. Sie können ein benutzerdefiniertes erstellen oder wie wir es tun. Verwenden Sie ein Standard-Bedienfeld für die Optionstafel. Wenn Sie mit den Option-Panel-Frameworks noch nicht vertraut sind, empfehlen wir Ihnen, die Artikel von Bonang Salemane zur Integration des Redux Framework-Themas zu lesen:
Um einen Design-Optionsbereich zu Ihren Addons hinzuzufügen, kopieren Sie den Ordner des Optionsfensters vollständig in den Add-Plugin-Ordner. Nun müssen wir mehrere Dateien zum Aktivieren benötigen:
if (! class_exists ('ReduxFramework') && file_exists (your_addons. '/optionpanel/framework.php')) required_once ('optionpanel / framework.php'); if (! isset ($ redux_demo) && file_exists (your_addons. '/optionpanel/config.php') requir_once ('optionpanel / config.php');
In diesem Code-Snippet wurden die beiden Hauptdateien von reduxframework benötigt: die Datei framework.php, die die Funktionalität des Optionsfelds verwaltet, und die config-, php-Datei, die für die Konfiguration des Optionsfensters zuständig ist. Die Dateien des Optionsfelds befinden sich in einem „Optionpanel“ -Ordner, der sich im Plugin-Ordner des Plugins für ninzio-addons befindet. Erledigt.
Es ist an der Zeit, dass wir einige benutzerdefinierte Funktionen enthalten. Erstellen Sie eine Datei in Ihrem Addons-Plugin-Ordner und nennen Sie sie etwa "addons-functons.php". Fügen Sie alle Ihre benutzerdefinierten Funktionen in diese Datei ein.
Zu beachten ist, dass Sie die richtigen Namenskonventionen für Funktionen verwenden. Verwenden Sie beschreibende Funktionsnamen mit einem eindeutigen Präfix. Zum Beispiel:
Funktion your_addons_profile_social_links () …
Gleich nach den Theme-Framework-Dateien benötigen Sie Ihre benutzerdefinierte Funktionsdatei:
required_once ('includes / addons-functions.php');
Fügen Sie nun einige benutzerdefinierte Widgets hinzu. Erstellen Sie einen Ordner mit dem Namen "Widgets" in Ihrem Add-In-Plugin-Ordner. Fügen Sie alle Ihre benutzerdefinierten Widgets-Dateien in diesen Ordner ein. Die Benennung von benutzerdefinierten Widgets-Dateien ist hier nicht kritisch, es wird jedoch empfohlen, Präfixe und Bindestriche zu verwenden, keine Unterstriche.
Beispielsweise heißt unsere benutzerdefinierte Twitter-Widgetdatei "ninzio-recent-tweets.php". Ebenso heißt unser Mailchimp-Widget "ninzio-mailchimp.php". Lassen Sie uns sie wie folgt aufnehmen:
required_once ('widgets / ninzio-recent-tweets.php'); required_once ('widgets / ninzio-mailchimp.php');
Auch hier wird der eigentliche Erstellungsprozess für benutzerdefinierte Widgets nicht behandelt. Sehen Sie sich dazu den Beitrag von Bonang Salemane an:
Wenn Sie ein Portfolio oder Ereignisse oder etwas hinzufügen möchten, das den regulären Beiträgen von WordPress ähnelt, jedoch vom Design getrennt werden muss, sollten Sie benutzerdefinierte Beitragstypen verwenden. Alle unsere Motive enthalten benutzerdefinierte Posttypen. Das Erstellen von benutzerdefinierten Post-Typen kann komplex sein, was wiederum den Rahmen dieses Tutorials sprengt. Ich empfehle Ihnen, Tom McFarlin zu lesen:
Für benutzerdefinierte Beitragstypen sollten Sie einen separaten Ordner in Ihrem Add-on-Plugin erstellen, z. B. "ninzio-projects". Platzieren Sie alle Dateien in diesem Ordner, die sich auf Ihre benutzerdefinierten Beitragstypen beziehen. Die wichtigsten Dateien hier sind die Hauptdateien, die die benutzerdefinierten Beitragstypen erstellen, die einzelne Beitragsdatei und die Schleifen- / Archivpostdatei. Benennen Sie Ihre benutzerdefinierte Posttyp-Hauptdatei so, wie Sie Ihren benutzerdefinierten Posttyp-Ordner benannt haben, z. B. "ninzio-projects.php". Fügen Sie den Code für Ihren benutzerdefinierten Beitragstyp in diese Datei ein. Um Ihren benutzerdefinierten Beitragstyp zu aktivieren, benötigen Sie die Hauptdatei:
required_once ('ninzio-projects / ninzio-projects.php');
Wenn Sie diese Funktionen voneinander trennen, sollten Sie immer Ihre Kunden berücksichtigen. Genauer gesagt, wie sie Ihre benutzerdefinierten Post-Typ-Vorlagendateien (Archiv und Single) erweitern / umschreiben können. Nehmen wir an, unser benutzerdefinierter Posttypname lautet "Projekte". Die einzelne benutzerdefinierte Post-Typ-Datei sollte "single-projects.php" und die Loop- / Archivdatei "archive-projects.php" heißen..
Wenn Ihr benutzerdefinierter Beitragstyp auch benutzerdefinierte Taxonomien enthält, sollten Sie auch eine separate Datei für sie erstellen. Nennen wir unsere Taxonomiedatei "taxonomy-projects.php". Jetzt haben wir drei Dateien:
single-projects.php archive-projects.php taxonomy-projects.php
Lassen Sie uns sie wiederbeschreibbar machen. Fügen Sie diese drei Funktionen zu Ihrer Haupt-Add-Datei hinzu:
Funktion your_addons_projects_single_template ($ single_template) global $ post; if ($ post-> post_type == 'projects') if ($ theme_file = locate_template (array ('single-projects.php'))) $ single_template = $ theme_file; else $ single_template = Ihre Addons. "projects / single-projects.php"; return $ single_template; add_filter ("single_template", "your_addons_projects_single_template", 20);
Funktion your_addons_projects_archive_template ($ archive_template) global $ post; if ($ post-> post_type == 'projects') if ($ theme_file = locate_template (array ('archive-projects.php'))) $ archive_template = $ theme_file; else $ archive_template = Ihre Addons. "projects / archive-projects.php"; return $ archive_template; add_filter ("archive_template", "your_addons_projects_archive_template", 20);
Funktion your_addons_projects_taxonomy_template ($ taxonomy_template) if (is_tax ('projects-category'))) if ($ theme_file = locate_template (array ('taxonomy-projects.php'))) $ taxonomy_template = $ theme_file; else $ taxonomy_template = Ihre_addons. "projects / taxonomy-projects.php"; return $ taxonomy_template; add_filter ("taxonomy_template", "your_addons_projects_taxonomy_template", 20);
Ändern Sie den Namen dieser Funktionen, um Ihr eindeutiges Präfix zu erhalten. Die Hauptlogik hier ist, die Vorlagendateien des benutzerdefinierten Beitragstyps zu laden, nachdem geprüft wurde, ob eine Kopie davon im Designordner vorhanden ist. Wenn Ihr Client die benutzerdefinierte Beitragstypvorlage in das Design kopiert und diese erweitert oder überschreibt, lädt das Add-In-Plug-In die Version des benutzerdefinierten Beitragstyps Ihres Clients. In dieser Situation werden Ihre Kerndateien im Addons-Plugin nicht geändert, sondern lediglich verlängert von Ihrem Kunden Bei zukünftigen Updates des Add-on-Plugins werden die benutzerdefinierten Änderungen Ihres Kunden nicht gelöscht.
Für benutzerdefinierte Skripts und Stile empfehlen wir Ihnen, separate Ordner zu erstellen und die Dateien wie in der Datei „functions.php“ Ihres Themas einzuordnen.
Wenn Sie benutzerdefinierte Kurzwahlen hinzufügen möchten, müssen Sie Ihre Kurzwahldatei erstellen und in Ihren Addons-Ordner einfügen. Erstellen Sie einen Ordner mit dem Namen "shortcodes" und erstellen Sie in diesem Ordner die Datei "yourprefix-shortcodes.php" (in unserem Fall: "ninzio-shortcodes.php"). In der Datei "-shortcodes.php" sollten Sie Ihren eigenen Kurzwahlcode eingeben.
Wie Sie bereits wissen, werden wir dieses Tutorial nicht verwenden, um den Erstellungsprozess für benutzerdefinierte Kurzcodes zu behandeln. Ich empfehle Ihnen jedoch, das Tutorial von Siddharth zu lesen:
Fügen Sie unsere benutzerdefinierte Kurzwahldatei hinzu:
required_once ('shortcodes / ninzio-shortcodes.php');
Wir sind fast fertig mit dem Addons-Plugin. Nachdem Sie alle Ihre benutzerdefinierten Funktionen getestet haben, ist es an der Zeit, die Sprachdatei zu erstellen, um Ihr Plugin übersetzbar zu machen.
Gehe zum Addons-Plugin-Ordner> Sprachen. Verwenden Sie die PoEdit-Software (PoEdit ist eine kostenlose Anwendung, die für Mac, Windows und Linux verfügbar ist.), Um die Sprachdatei zu generieren. Seien Sie wieder sehr genau bei der Benennung der Dateien; Die resultierenden Dateien sollten genau wie Ihr Addons-Plugin-Ordner benannt werden. Unser Plugin-Name lautet beispielsweise "ninzio-addons", die Sprachdatei sollte "ninzio-addons.pot" sein. Dies ist die Hauptsprachendatei, die alle Zeichenfolgen in Ihrer Textdomäne enthält. Aus dieser Datei können Sie andere Sprachdateien erstellen.
So übersetzen Sie Ihre Addons-Plugin-Sprachdatei:
Nun ist dein Plugin fertig, gut gemacht! Wir haben die gesamte erforderliche Funktionalität aus unseren Präsentationsdateien genommen und ein gepacktes Plugin bereitgestellt, das wir über mehrere Themen hinweg aktualisieren können.
Ich hoffe, es hat Ihnen gefallen, mitzumachen. Vergessen Sie nicht, dass Sie das Plug-In-Plugin für gepackte Addons auf Github packen und als Ausgangspunkt verwenden können.