So erstellen Sie ein Packed Addons Plugin für WordPress

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.

Theme-Entwicklungslogik

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.

Funktionsarten

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:

  • Bedienfeld für Optionen
  • Page / Post erweiterte benutzerdefinierte Felder
  • Benutzerdefinierte Widgets
  • Benutzerdefinierte Kurzwahlen
  • Benutzerdefinierte Posttypen
  • Kundenspezifische Zusatzfunktionen

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. 

Lass uns anfangen

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: 

  • Plugin-Name: Dieser sollte kurz und beschreibend sein. 
  • Plugin-URI: Sie können Ihre Website-Adresse hier einfügen. 
  • Textdomäne: Dies ist ein sehr wichtiger Parameter. Sie sollten es genauso benennen wie Ihr Plugin-Ordner und Ihre Hauptdatei. Mit der Textdomäne können Sie und Ihre Benutzer Plugin-Strings übersetzen. Später werden wir untersuchen, wie ein gepacktes Addon-Plugin übersetzt wird (dies ist für unsere Kunden sehr wichtig).. 
  • Domänenpfad: Dieser Parameter ist auch für die Plugin-Übersetzung sehr wichtig. Der Domänenpfad ist relativ zum Sprachdateiordner. Gehen Sie zu Ihrem Add-In-Plugin-Ordner und erstellen Sie einen leeren Ordner mit dem Namen "languages". Für jetzt lassen Sie es leer; Später erstellen wir die Sprachdatei. 
  • Alle anderen Parameter "Author", "Version", "Author URI" sind einigermaßen selbsterklärend.

Nachdem Sie den Plug-In-Ordner für Add-Ins und die Hauptdatei erstellt haben, müssen Sie unser Plug-In konfigurieren.

Aufbau

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.

Plugin-Verzeichnispfad

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.

Theme Options Panel

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:

  • Erste Schritte mit Redux Framework: Einführung und Integration in Ihr Theme

    Bei den meisten gut entworfenen WordPress-Themes können Site-Admins bestimmte Aspekte des Themas über eine Optionsseite anpassen. Der Prozess zum Erstellen einer Optionsseite…
    Bonang Salemane
    WordPress

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.

Benutzerdefinierte Funktionen

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

Benutzerdefinierte Widgets

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:

  • Erstellen eigener Widgets mit verschiedenen WordPress-APIs: Einführung

    Widgets sind eine nette Möglichkeit, um Website-Inhabern eine gewisse Kontrolle über das Aussehen (und manchmal auch die Funktionalität) ihrer WordPress-Sites zu geben. In dieser Serie gehen wir…
    Bonang Salemane
    WordPress-Widgets

Benutzerdefinierte Posttypen und Taxonomien

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:

  • Schneller Tipp: Posttypen, Taxonomien und Permalinks

    Benutzerdefinierte Post-Typen und Taxonomien sind zwei leistungsstarke Funktionen von WordPress. Leider können sie dazu neigen, Probleme zu verursachen, wenn Entwickler nicht…
    Tom McFarlin
    WordPress

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.

Benutzerdefinierte Skripte, Stile und Shortcodes

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:

  • WordPress Shortcodes: Der richtige Weg

    Einer der Hauptgründe, warum WordPress die beliebteste verfügbare CMS-Plattform ist, ist die schiere Anpassungsfähigkeit, die es bietet. Heute,…
    Siddharth
    Themenentwicklung

Fügen Sie unsere benutzerdefinierte Kurzwahldatei hinzu:

required_once ('shortcodes / ninzio-shortcodes.php');

Sprachen

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:

  1. Starten Sie Poedit.
  2. In Poedit gehe zu Datei> Neu aus POT / PO-Datei…
  3. Wählen Sie die Pot-Datei aus dem Sprachenordner aus und öffnen Sie sie.
  4. Geben Sie Ihren Namen, Ihre E-Mail-Adresse, Ihre Sprache und Ihr Land ein (d. H. Französisch fr_FR, deutsch de_DE).
  5. Drücke den Aktualisieren Schaltfläche in der Hauptbenutzeroberfläche von Poedit.
  6. Speichern Sie die Datei mit dem Namen "Dateiname-xx_XX.po" mit "xx_XX" für Ihre Sprache und Ihr Land.
  7. Das ist es!

Fazit

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.