Wie MUSS das Verzeichnis für ein Plugin strukturiert sein?

9

Ich bekomme das grundlegende Plugin-Konzept. Ich habe den Codex-Artikel über das Schreiben eines Plugins gelesen

Dieser Artikel spricht über die "Haupt-Plugin-Datei".

Wie ermittelt Wordpress "die Haupt-Plugin-Datei"?

Frage 1:
Ist es legal / unterstützt, ein Plugin zu haben, das so aufgebaut ist:

  • Pluginname /
  • pluginname / mainfile.php
  • Pluginname / Supportcode-1.php
  • Pluginname / Supportcode-2.php
  • Pluginname / Readme.txt
  • usw..

?

F2:
Wenn ja, wie bestimmt WordPress, welche PHP-Datei die Haupt-Plugin-Datei ist?


Ich habe Empfehlungen gesehen, die besagen: "Ich strukturiere meinen Code so ":

  • Pluginname /
  • pluginname / mainfile.php
  • Pluginname / inc / Supportcode-1.php
  • Pluginname / inc / Supportcode-2.php
  • Pluginname / Readme.txt
  • usw..

F3:
Ist die Verwendung eines Unterverzeichnisses (wie inc/im obigen Beispiel) erforderlich, wenn der PHP-Code mehrere Module umfasst?

F4:
Stimmt es, dass sich maximal EINE PHP-Datei im Haupt-Plugin-Verzeichnis befinden sollte?

Vielen Dank.

Cheeso
quelle
Sicherlich wird Ihre erste Frage "Wie bestimmt WordPress die Haupt-PHP-Datei
?"

Antworten:

12

Wie ermittelt Wordpress "die Haupt-Plugin-Datei"?

Es ist die Datei in Ihrem Plugin, die den Kommentar zum Plugin-Header enthält

/**
 * Plugin Name: A fresh example
 * Plugin URI:  http://example.com
 * Description: Foo makes a bar
 * Version:     2012-06-14.1426
 * Author:      John Doe
 * Author URI:  http://example.com
 * TextDomain:  your_textdomain
 * License:     MIT
 * LicenseURI:  http://www.opensource.org/licenses/mit-license.php
 */

Frage 1: Ist es legal / unterstützt, ein Plugin zu haben, das so aufgebaut ist:

Ja. Jede Verzeichnisstruktur (soweit von Servern unterstützt) ist legal.

F2: Wenn ja, wie bestimmt WordPress, welche PHP-Datei die Haupt-Plugin-Datei ist?

Siehe oben ↑

F3: Ist die Verwendung eines Unterverzeichnisses (wie inc / im obigen Beispiel) eine Anforderung, wenn der PHP-Code mehrere Module umfasst?

Anforderung? Schöner zu lesen: ja. Einfacher zu warten: Auch ja.

F4: Stimmt es, dass sich maximal EINE PHP-Datei im Haupt-Plugin-Verzeichnis befinden sollte?

Einfach nein.

Zusammenfassend

Die Art und Weise, wie Sie Ihre Dateien und Verzeichnisse vollständig organisieren, liegt bei Ihnen, Ihren persönlichen Vorlieben und sonst nichts. Wenn Sie die Wartung vereinfachen und anderen Entwicklern das Durchlaufen Ihres Codes erleichtern möchten, sollten Sie eine Art Datei- / Verzeichnisorganisation verwenden.

Beispiele

Ich persönlich füge .class.phpals Erweiterung hinzu, wenn ich eine Klasse darin habe. Ich benenne meine Dateien auch genau wie die Klasse. Der Grund ist einfach: Meine "Haupt-Plugin-Datei" - das ist meine bootstrapKlasse - kümmert sich normalerweise darum, alle benötigten Dinge zu laden.

// inside my PREFIX_bootstrap class:
public static $includes = array(
    'settings'          => false // Parent class - no need to hook
   ,'settings_extended' => true  // Extending class - hooks static init() on `init` hook
);

public function construct()
{
    // The prefix for every class in my plugin
    $prefix = 'my_class_prefix_';

    foreach ( $this->files as $handle => $hook )
    {
        require_once plugin_dir_path( __FILE__ )."{$handle}.class.php";

        if ( ! $hook )
            continue;

        $class = $prefix.$handle;
        class_exists( $class ) AND add_action( 'init', array( $class, 'init' ), 1 );
    }
}

Dies bedeutet, dass meine Klassen und Dateien wie folgt benannt sind:

  • settings.class.php UND settings_extended.class.php
  • my_class_prefix_settings UND my_class_prefix_settings_extended

Ich mache auch einige grundlegende Verzeichnisorganisationen, wie das Speichern aller js/css/imgDateien in Verzeichnissen mit diesem Namen.

Einige Leute verwenden (für größere Plugins) Ordner, die benannt sind inc/includes/assets/extensions/lib/etc.. Ich würde empfehlen, Unterordner nur für große Plugins zu verwenden. Wenn Sie zusätzliche Dinge wie Widgets usw. haben, können Sie bestimmte Unterordner für diese verwenden.

Letztes Wort: Nein, nichts, was Sie gefunden haben, ist wahr , das (wie das, was ich Ihnen gezeigt habe) sind nur Empfehlungen.

Kaiser
quelle
1
Vielen Dank für diese Antwort. Der Header-Kommentar ist also die Art und Weise, wie WordPress die "Haupt-Plugin-Datei" findet. Es lädt nur das eine, richtig? Und natürlich alle anderen Tochter-PHP-Dateien, die von dieser benötigt oder enthalten werden. Richtig? Ich denke, es war mir im Kodex einfach nicht klar. Ich habe es gerade noch einmal gelesen und sehe, was es jetzt sagt. Ich wünschte, es würde so etwas wie "Wordpress sucht nach der einen Datei in Ihrer Zip-Datei, die diesen speziellen Header hat; es ignoriert andere Dateien in der Zip-Datei." oder so ähnlich. trotzdem danke.
Cheeso
Ja, es werden nur die von Ihnen angegebenen Dateien sowie die "Haupt" -Datei geladen. Beachten Sie, dass es Hooks mit seitenspezifischen Teilen gibt, um zu verhindern, dass bei jeder Anforderung alles geladen wird.
Kaiser