Frage

Ein Gemeinschafts -Wiki zum Sammeln beginnen Zielsetzung Best Practices für die Pluginentwicklung. Diese Frage wurde von inspiriert von @Eamanns Kommentare zu WP-Hackers.

Die Idee ist, zusammenzuarbeiten, welche objektiven Best Practices aussehen könnten, damit wir sie möglicherweise schließlich im Überprüfungsprozess in der Community Collaboration verwenden können.

AKTUALISIEREN: Nach den ersten Antworten wird klar, dass wir nur eine Idee/einen Vorschlag/eine Best-Practice pro Antwort haben müssen, und die Leute sollten die Liste überprüfen, um sicherzustellen, dass vor der Veröffentlichung keine Duplikate vorhanden sind.

War es hilfreich?

Lösung

Verwenden Sie Aktionen und Filter

Wenn Sie denken, dass die Leute einige Daten hinzufügen oder ändern möchten: zur Verfügung stellen apply_filters () Vor der Rückkehr.

PS Eine Sache, die ich ein bisschen enttäuschend finde und dass Ihre Frage der Prozentsatz der Plugins ist, die nur für Endbenutzer konzipiert sind, dh, die keine eigenen Haken haben. Stellen Sie sich vor, WordPress wäre wie die meisten Plugins gestaltet? Es wäre unflexibel und eine sehr Nischenlösung.

Vielleicht wären die Dinge anders, wenn WordPress die Möglichkeit haben würde, Plugins automatisch zu installieren, auf denen andere Plugins abhängen? So wie es ist, muss ich in der Regel viel von der Funktionalität schreiben, die ich von Grund auf neu benötige, da Kunden die Dinge auf eine bestimmte Weise und die verfügbaren Plugins wünschen, während 90% dort 90% sind, nicht die Flexibilität, die verbleibenden 10% zu aktualisieren.

Ich wünsche mir wirklich, dass diejenigen, die die WordPress -Community führen, einen Weg identifizieren würden, um sicherzustellen, dass Plugins für die Befolgung Best Practices (z. B. Hinzufügen von Hooks für andere Entwickler) belohnt werden, ähnlich wie auf einer Stackexchange -Website gute Antworten belohnt werden.

Nehmen wir ein Beispiel von eine andere Frage:

Beispiel: Ich möchte etwas in meinem Plugin tun, wenn jemand einen Artikel retweet. Wenn es einen benutzerdefinierten Haken in dem beliebten Retweet -Plugin gäbe, das ich anschließt und abfeuern könnte, wäre das großartig. Es gibt es nicht, damit ich ihr Plugin so ändern kann, dass es es einbezieht, aber das funktioniert nur für meine Kopie, und ich möchte nicht versuchen, dies neu zu verteilen.

Verwandt

Andere Tipps

Laden Sie Skripte/CSS mit wp_enqueue_script und wp_enqueue_style

Plugins sollten nicht laden / versuchen, doppelte Versionen von JS / CSS -Dateien zu laden, insbesondere JQuery- und andere JS -Dateien, die in WP Core enthalten sind.

Plugins sollten immer verwendet werden wp_enqueue_script und wp_enqueue_style Beim Verknüpfen von JS- und CSS -Dateien und nie direkt über direkt über <script> Stichworte.

Verwandt

I18N -Unterstützung

Alle Ausgabezeichenfolgen sollten mit einer geeigneten Textdomäne verknüpft werden, um die Internationalisierung durch interessierte Parteien zu ermöglichen, auch wenn der Entwickler kein Interesse daran hat, sein eigenes Plug-In zu übersetzen.

Beachten Sie, dass es sehr wichtig ist, die Sprachdateien während der zu laden init Aktion, damit der Benutzer die Aktion anschließen kann.

Siehe den Codex: I18n für WordPress -Entwickler

Und auch dieser Artikel: Laden von WP -Sprachdateien die richtige Dateien.

Seit WordPress 4.6+

WP 4.6 hat die Lastreihenfolge geändert und die Standorte überprüft, es hat es Entwicklern und Benutzern viel einfacher gemacht.

In Anbetracht eines Plugins mit einem Textdomain 'My-Plugin' sucht WordPress nun zuerst nach einer Übersetzungsdatei in:
/wp-content/Languages/plugins/my-plugin-en_us.mo

Wenn es dort nicht findet, sucht es nach einem, in dem das Plugin es aussieht (üblich im Ordner der Pluigns 'Sprache', wenn der Codex folgt):
/wp-content/plugins/my-plugin/languages/my-plugin-en_us.mo

Wenn keine Sprachdatei festgestellt wird, wird der Standardpunkt von: überprüft:
/wp-content/Languages/my-plugin-en_us.mo

Die erste Überprüfung wurde in 4.6 hinzugefügt und gibt den Benutzern einen definierten Ort, um eine Sprachdatei hinzuzufügen, da sie zuvor wissen müssten, wo der Entwickler die Sprachdatei hinzugefügt hat. Jetzt muss der Benutzer nur die Textdomäne des Plugins kennen:/wp-content/Languages/plugins/textdomain-local.mo


Unten ist der alte Weg (nicht relevant, da WP 4.6+)

[...]
Schließlich möchte ich darauf hinweisen, dass dies wichtig ist Laden Sie benutzerdefinierte Benutzersprachdateien von WP_ILLG_DIR, bevor Sie die Sprachdateien laden, die mit dem Plugin versendet werden. Wenn mehrere Mo-Dateien für dieselbe Domäne geladen werden, wird die erste gefundene Übersetzung verwendet. Auf diese Weise dienen die vom Plugin bereitgestellten Sprachdateien als Fallback für Strings, die vom Benutzer nicht übersetzt wurden.

public function load_plugin_textdomain()
{
    $domain = 'my-plugin';
    // The "plugin_locale" filter is also used in load_plugin_textdomain()
    $locale = apply_filters( 'plugin_locale', get_locale(), $domain );

    load_textdomain( 
            $domain, 
            WP_LANG_DIR . '/my-plugin/' . $domain . '-' . $locale . '.mo' 
    );
    load_plugin_textdomain( 
            $domain, 
            FALSE, 
            dirname( plugin_basename(__FILE__) ) . '/languages/' 
    );
}

Stellen Sie sicher, dass Plugins keine Fehler mit wp_debug generieren

Testen Sie Ihre Plugins immer mit WP_DEBUG Eingeschaltet und idealerweise haben es während Ihres gesamten Entwicklungsprozesses eingeschaltet. Ein Plugin sollte keine Fehler mit machen WP_DEBUG an. Dies schließt veraltete Mitteilungen und ungeprüfte Indizes ein.

Bearbeiten Sie Ihre Debuggging, um Ihre Debugging einzuschalten, um Ihre zu bearbeiten wp-config.php Datei so dass die WP_DEBUG konstant ist auf true. Siehe das Codex auf Debug für mehr Details.

Verwenden Sie zunächst vorhandene Funktionen im WordPress -Kern

Falls Sie können: Verwenden Sie vorhandene Funktionen, die in WordPress Core enthalten sind anstatt deine eigenen zu schreiben. Entwickeln Sie nur benutzerdefinierte PHP-Funktionen, wenn im WordPress-Kern keine geeignete bereits vorhandene Funktion vorliegt.

Ein Vorteil ist, dass Sie nutzen können "Protokollierte Mitteilungen" So problemlos Funktionen zu überwachen, die ersetzt werden sollten. Ein weiterer Vorteil ist, dass Benutzer die Funktionsdokumentation im Codex anzeigen und besser verstehen können, was das Plugin tut, auch wenn sie kein erfahrener PHP -Entwickler sind.

Verwandt

Deinstallieren sollten alle Daten eines Plugins entfernen

Nach einer WordPress -Installation entfernt, Ein Plugin sollte alle Dateien, Ordner, Datenbankeinträge und Tabellen löschen was es so gut erstellte wie die Optionswerte es schuf.

Plugins bietet möglicherweise eine Option zum Export-/Importieren der Einstellungen, damit Einstellungen vor dem Löschen außerhalb von WordPress gespeichert werden können.

Verwandt

Verhindern Sie die SQL -Injektion mit Eingabedaten

Ein Plugin sollte Bereinigen Sie alle Benutzereingaben, die direkt oder indirekt abgerufen werden (zB über $_POST oder $_GET) Bevor Eingabewerte verwendet werden, um die MySQL -Datenbank abzufragen.

Sehen: Formatierung von SQL -Anweisungen.

Präfix alle globalen Namespace -Elemente

Ein Plugin sollte alle globalen Namespace -Elemente (Konstanten, Funktionen, Klassen, Variablen, selbst benutzerdefinierte Taxonomien, Post -Typen, Widgets usw.) ordnungsgemäß präfixen. Erstellen Sie beispielsweise keine Funktion namens namens init(); Nennen Sie es stattdessen so etwas wie jpb_init().

Es sollte ein Präfix von drei oder vier Buchstaben vor den Namen verwenden oder die Verwendung des PHP -Namespace -Funktion. Vergleichen: Ein Buchstabenpräfix für PHP-Klassenkonstanten?

Verwandt

Verwenden Sie einen Klassen- und objektorientierten PHP5 -Code

Es gibt keinen Grund, einen sauberen, objektorientierten PHP5-Code nicht zu schreiben. Die Unterstützung von PHP4 wird nach der nächsten Version (WP 3.1) auslaufen. Natürlich können Sie alle Ihre Funktionsnamen so vorab mit endlos_long_function_names_with_lots_of_underscores enden, aber es ist viel einfacher, nur eine einfache Klasse zu schreiben und alles darin zu bündeln. Setzen Sie Ihre Klasse auch in eine separate Datei ein und nennen Sie sie entsprechend, damit Sie sie leicht erweitern und pflegen können:

// in functions.php
require 'inc/class-my-cool-plugin.php';
new MyCoolPlugin();

// in inc/class-my-cool-plugin.php
class MyCoolPlugin {
    function __construct() {
        // add filter hooks, wp_enqueue_script, etc.

        // To assign a method from your class to a WP 
        // function do something like this
        add_action('admin_menu', array($this, "admin"));
    }

    public function admin() {
        // public methods, for use outside of the class
        // Note that methods used in other WP functions 
        // (such as add_action) should be public
    }

    private function somethingelse() {
        // methods you only use inside this class
    }
}

Die Deaktivierung sollte den Datenverlust nicht provozieren

Ein Plugin sollte nicht Löschen Sie eine seiner Daten auf Deaktivierung.

Verwandt

Fügen Sie nur Dateien hinzu, die Sie benötigen ...

Wenn Sie sich im vorderen Ende befinden, geben Sie keinen Code an, der sich auf den Administratorbereich bezieht.

Kündigen Sie den Datenverlust bei Plugin-Deinstallation an

Nach deinstallation ein Plugin sollte fordern Sie einen Benutzer auf, die Daten zu löschen und erhalten Sie eine Bestätigung, dass der Benutzer vor dem Löschen der Daten und eines Plugins in Ordnung ist sollte Auch Ermöglichen Sie dem Benutzer die Option, die Daten zu behalten nach deinstallation. (Diese Idee von @eamann.)

Verwandt

Lassen Sie den Ordnernamen des Plugins geändert werden

/Plugins/Pluginname/{verschiedene}

Der für den Ordner verwendete "PluginName" sollte immer veränderlich sein.

Dies wird normalerweise durch Definieren von Konstanten und konsequent über das gesamte Plugin behandelt.

Unnötig zu erwähnen, dass viele beliebte Plugins Sünder sind.

Verwandt:

  • plugins_url() Zur einfachen Verknüpfung mit Ressourcen, enthalten im Plugin.

Verwenden Sie WordPress (eingebaute) Fehlerbehandlung

Nicht nur return; Wenn eine Benutzereingabe falsch war. Liefern Sie ihnen einige Informationen darüber wurden falsch gemacht.

function some_example_fn( $args = array() ) 
{
    // If value was not set, build an error message
    if ( ! isset( $args['some_value'] ) )
        $error = new WP_Error( 'some_value', sprintf( __( 'You have forgotten to specify the %1$s for your function. %2$s Error triggered inside %3$s on line %4$s.', TEXTDOMAIN ), '$args[\'some_value\']', "\n", __FILE__, __LINE__ ) );

    // die & print error message & code - for admins only!
    if ( isset( $error ) && is_wp_error( $error ) && current_user_can( 'manage_options' ) ) 
        wp_die( $error->get_error_code(), 'Theme Error: Missing Argument' );

    // Elseif no error was triggered continue...
}

Ein Fehler (Objekt) für alle

Sie können während der Bootstrap ein globales Fehlerobjekt für Ihr Thema oder Ihr Plugin einrichten:

function bootstrap_the_theme()
{
    global $prefix_error, $prefix_theme_name;
    // Take the theme name as error ID:
    $theme_data = wp_get_theme();
    $prefix_theme_name = $theme_data->Name;
    $prefix_error = new WP_Error( $theme_data->Name );

    include // whatever, etc...
}
add_action( 'after_setup_theme', 'bootstrap_the_theme' );

Später können Sie unbegrenzte Fehler bei Bedarf hinzufügen:

function some_theme_fn( $args )
{
    global $prefix_error, $prefix_theme_name;
    $theme_data = wp_get_theme();
    if ( ! $args['whatever'] && current_user_can( 'manage_options' ) ) // some required value not set
        $prefix_error->add( $prefix_theme_name, sprintf( 'The function %1$s needs the argument %2$s set.', __FUNCTION__, '$args[\'whatever\']' ) );

    // continue function...
}

Dann können Sie sie alle am Ende Ihres Themas holen. Auf diese Weise unterbrechen Sie nicht die Rendern der Seite und können immer noch alle Ihre Fehler für die Entwicklung ausgeben

function dump_theme_errors()
{
    global $prefix_error, $prefix_theme_name;

    // Not an admin? OR: No error(s)?
    if ( ! current_user_can( 'manage_options' ) ! is_wp_error( $prefix_error ) )
        return;

    $theme_errors = $prefix_error->get_error_messages( $prefix_theme_name );
    echo '<h3>Theme Errors</h3>';
    foreach ( $theme_errors as $error )
        echo "{$error}\n";
}
add_action( 'shutdown', 'dump_theme_errors' );

Sie können weitere Informationen finden Dies q. Ein entsprechendes Ticket zur Behebung des "Zusammenarbeits" von WP_Error und wp_die() ist von dort verknüpft und ein weiteres Ticket wird folgen. Kommentare, Kritiker und so werden geschätzt.

Minimieren Sie den dem globalen Namespace hinzugefügten Namen

Ein Plugin sollte Reduzieren Sie den Einfluss so viel wie möglich durch Minimierung der Anzahl der Namen, die sie dem globalen Namespace hinzufügt.

Dies kann durchgeführt werden, indem die Funktionen des Plugins in eine Klasse eingekapselt werden oder die Verwendung der Verwendung PHP -Namespaces -Funktion. Das Präfix alles kann auch helfen, ist aber nicht so flexibel.

Neben Funktionen und Klassen ein Plugin sollte nicht Globale Variablen einführen. Verwenden von Klassen, die normalerweise veraltet sind, und es vereinfacht die Plugin -Wartung.

Verwandt

Kommentar mit PHPDOC

Best Practice liegt nahe am Phpdoc -Stil. Wenn Sie keine IDE wie "Eclipse" verwenden, können Sie einfach einen Blick darauf werfen im PHPDOC -Handbuch.

Sie müssen nicht genau wissen, wie dies funktioniert. Professionelle Entwickler können den Code trotzdem lesen und benötigen dies nur als Zusammenfassung. Hobby -Codierer und -Nutzer könnten zu schätzen wissen, wie Sie es auf derselben Wissensniveau erklären.

Verwenden Sie die Einstellungs -API vor add_option

Anstatt über die Funktion add_option Optionen zur DB hinzuzufügen, sollten Sie sie als Array mit der Verwendung der Verwendung des Arrays speichern Einstellungen API Das kümmert sich um alles für Sie.

Verwenden Sie die Themenmodifikations -API vor add_option

Das Modifikationen API ist ein ziemlich einfaches Konstrukt und ein sicherer Weg, mit dem das Hinzufügen und Abrufen von Optionen ermöglicht wird. Alles wird als serialisierter Wert in Ihrer Datenbank gespeichert. Einfach, sicher und einfach.

Schützen Sie Plugin -Benutzer Privatsphäre

(Zuvor: Anonyme API -Kommunikation)

Wenn ein Plug-In mit einem externen System oder einer API (z. B. einem Webservice) kommuniziert, sollte dies anonym erfolgen oder dem Benutzer eine anonyme Option zur Verfügung stellen, die sicherstellt, dass keine Daten mit dem Benutzer des Plugins gegen eine zweite Partei unkontrolliert sind.

Host -Plugins auf WordPress.org

Verwenden Sie das Svn Repository bereitgestellt auf WordPress.org zum Hosting von Plugins. Dies erleichtert eine einfachere Aktualisierung der Benutzererfahrung. Wenn Sie SVN noch nie zuvor verwendet haben, können Sie tatsächlich verstehen, indem Sie es in einem Kontext verwenden, der es rechtfertigt.

Stellen Sie die Zugriffskontrolle mit Berechtigungen an

In vielen Fällen möchten Benutzer möglicherweise nicht, dass jeder Zugriff auf Bereiche hat, die von Ihrem Plugin erstellt wurden, insbesondere mit Plugins, die mehrere komplexe Vorgänge ausführen, reicht möglicherweise nicht aus.

Haben Sie zumindest geeignete Funktionsprüfungen für alle unterschiedlichen Verfahren, für die Ihr Plugin verwendet werden kann.

Plugin -Einstellungen importieren / exportieren

Es ist nicht so üblich über Plugins, aber wenn Ihr Plugin (einige) Einstellungen hat, ist es jedoch sollte Geben Sie den Import / Export von Daten wie Konfiguration und Benutzereingabe an.

Import/Export verbessert die Verwendbarkeit eines Plugins.

Ein Beispiel-Plugin, das eine solche Import- und Exportfunktionalität hat (und auch ein Rückgängigmechanismus), ist Breadcrumb Navxt (WordPress -Plugin) (Vollständige Offenlegung: Ein kleiner Code von mir dort, die meisten wurden von Mtekk gemacht).

Verwandt

Organisieren Sie Ihren Code

Es ist immer schwer, Code zu lesen, der nicht in der Reihenfolge geschrieben ist, die es ausgeführt wird. Fügen Sie zunächst/fordern, definieren, wp_enqueue_style & _script usw., dann die Funktionen, die das Plugin/Thema benötigt, und schließlich den Builder (z. B. Admin -Bildschirm, das in das Thema integriert usw.).

Versuchen Sie, Dinge wie CSS und JS in ihren eigenen Ordnern zu trennen. Versuchen Sie auch, dies mit Funktionen zu tun, die nur Helfer wie Array -Abflutungen und ähnlich sind. Wenn Sie die "Haupt" -Datei so sauber und einfach wie möglich zu lesen, können Sie Benutzern, Entwicklern und Sie hilft, wenn Sie versuchen, in einem Jahr zu aktualisieren und den Code seit länger nicht mehr zu sehen.

Es ist auch gut, eine Struktur zu haben, die Sie oft wiederholen, sodass Sie sich immer durch den Weg finden. Wenn Sie sich in einer bekannten Struktur in verschiedenen Projekten entwickeln, werden Sie Zeit, um es besser zu machen, und selbst wenn Ihr Kunde zu einem anderen Entwickler wechselt, werden Sie nie "ein Chaos hinterlassen" hören. Dies baut Ihren Ruf auf und sollte ein langfristiges Ziel sein.

Sterben mit Stil

anständige Weise sterbenAlle Plugins (und sogar Themen) Funktionen sollten verwendet werden wp_die() an kritischen Orten, an denen der Benutzer ein wenig Informationen darüber bietet, was passiert war. PHP -Fehler sind ärgerlich und wp_die Kann dem Benutzer eine schöne gestaltete Nachricht darüber geben, was das Plugin (oder er) falsch gemacht hat. Wenn der Benutzer deaktiviert wird, wird das Plugin nur kaputt gegangen.

Verwendung wp_die() Hilft auch, dass Ihre Plugins / Themen mit dem kompatibel sind WordPress Testsuite.

Verwandt:

Bieten Sie Benutzern Hilfe bei.

Es ist schöner, RTFM (klicken Sie auf Hilfe) als Antwort zu sagen, als die Frage immer wieder zu beantworten.

/**
  * Add contextual help for this screen
  * 
  * @param $rtfm
  * @uses get_current_screen
  */ 
  function ContextualHelp( /*string*/ $rtfm) 
  { 
     $current_screen = get_current_screen();
     if ($current_screen->id == $this->_pageid) 
     {
        $rtfm .= '<h3>The WordPress Plugin - Screen A</h3>';
        $rtfm .= '<p>Here are some tips: donate to me ' .
     }
     return $rtfm; 
  }
add_action('contextual_help', array($this,'ContextualHelp'),1,1);

Update / Hinweis: (Siehe Kommentare von Kaiser): Das obige Beispiel soll in einer Klasse verwendet werden

Bieten Sie erweiterbare Formen an

Wenn ein Plugin die Möglichkeit bietet, Daten einzugeben, sollte es am Ende immer einen Haken haben, kurz vor der Taste "Senden" und/oder "Zurücksetzen", sodass Entwickler das Formular problemlos mit nicht nur Feldern, sondern auch Schaltflächen erweitern können.

Sehen: Einstellungen API

Verwandt

Fügen Sie die Funktion immer über Hook ein, nicht direkt.

Beispiel:

  • Verwenden Sie nicht für die Klasse des Plugins über neu ohne Haken

  • Verwenden Sie das Hook Plugins_Loaded

    // add the class to WP                                   
    function my_plugin_start() {                                                               
        new my_plugin();   
    }                                                        
    add_action( 'plugins_loaded', 'my_plugin_start' );
    

Aktualisieren:Ein kleines Live -Beispiel: Plugin-SVN-Trunk-Pageund ein Pseudo -Beispiel

//avoid direct calls to this file where wp core files not present
if (!function_exists ('add_action')) {
        header('Status: 403 Forbidden');
        header('HTTP/1.1 403 Forbidden');
        exit();
}

if ( !class_exists( 'plugin_class' ) ) {
    class plugin_class {

        function __construct() {
        }

    } // end class

    function plugin_start() {

        new plugin_class();
    }

    add_action( 'plugins_loaded', 'plugin_start' );
} // end class_exists

Sie können auch über MU_PLUGINS_LOAD auf Multisitin-Installation laden. Die Aktionsreferenz finden Sie im Codex: http://codex.wordpress.org/plugin_api/action_referenceAuch hier sehen Sie, wie wp mit diesem Haken inlcude wp: http://adambrown.info/p/wp_hooks/hook/plugins_loaded?version=2.1&file=wp-settings.phpIch benutze das sehr oft und es ist nicht so schwer und früh, besser als eine harte neue Klasse ();

Lizenz -Plugins unter einer GPL -kompatiblen Lizenz

Plug-Ins und Themen sollte unter einer WordPress-kompatiblen Lizenz lizenziert werden. Auf diese Weise können sie mit WordPress als "Programm" erneut verteilt werden. Eine empfohlene Lizenz ist Die GPL. Achten Sie darauf, dass alle im Plug-In enthaltenen Codebibliotheken mit derselben Lizenz kompatibel sind.

(Das hat war ein Problem und ernst Debattepunkt beide in der Vergangenheit und gegenwärtig.)

Ihre Plugin -Beschreibung sollte die Funktionen Ihres Plugins genau beschreiben. Es gibt 10 Post -Plugins. Alle von ihnen zeigen Beiträge, aber viele haben unterschiedliche Funktionen. Es sollte einfach sein, Ihr Plugin mit ähnlichen Plugins zu vergleichen, indem Sie die Beschreibung lesen.

Sie sollten es vermeiden, damit zu prahlen, wie einfach Ihr Plugin ist, es sei denn, es ist wirklich sehr einfach. Sie sollten nützliche Links in die Beschreibung wie den Link zu den Einstellungen aufnehmen.

Minimieren Sie die Nebenwirkungen von Remote-DataSources und Webservices

Ein Plugin sollte Cache/Shield -Webservice und/oder XMLRPC/SOAP-Anforderungen über eine Caching/Data-Provider-Schicht Wenn Sie sie verwenden, um keine Frontanträge auf (langsame) Webservice-Reaktion zu warten.

Dazu gehört der Download von RSS -Feed und anderen Seiten. Entwerfen Sie Ihre Plugins, die Daten im Hintergrund anfordern.

Ein möglicher Schritt ist (als Beispiel in Ping.fm posting): Erstellen Sie eine Puffertabelle, sagen wir: PING_FM_BUFFER_POST (Datum, Uhrzeit, Nachricht, übermittelt_time, Status)

  1. Fügen Sie für jedes Mal, wenn Sie Update an ping.fm einreichen möchten, zu dieser Tabelle hinzu.
  2. Jetzt müssen wir ein Plugin erstellen, um diese Daten zu verarbeiten. Dieses Plugin wird über Crontab ausgeführt, um nach jedem noch nicht eingereichten Update zu überprüfen
  3. Da wir diese Tabelle haben, können wir auch jede an ping.fm übermittelte Nachricht auflisten und den Status jedes Beitrags überprüfen. Nur für den Fall, dass auf Ping.fm ein Problem gibt, können wir es erneut einsetzen.

Testen Sie Ihr Plugin

Wir sollten auf jeden Fall einige Testwerkzeuge in unserer Plugin -Entwicklungsumgebung haben.

Bezogen auf Diese Antwort durch Ethan Seifert Zu einer Testfrage sind dies gute Praktiken, die folgen sollten:

  • Ihre Unit -Tests sollten das geringste Verhalten testen, das eine Klasse durchführen kann.
  • Wenn Sie die Ebene der Funktionstests erreichen, können Sie Ihren Code mit WordPress -Abhängigkeiten testen.
  • Abhängig von dem, was Ihr Plugin tut-sollten Sie Selenium-basierte Tests verwenden, die auf das Vorhandensein von Daten in der DOM testen, indem Sie IDs verwenden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top