Come DEVE essere strutturata la directory per un plugin?


9

Ottengo il concetto di plug-in di base. Ho letto l'articolo del Codex su Writing a Plugin

Quell'articolo parla del "file plugin principale".

In che modo Wordpress determina "il file del plugin principale"?

Q1:
È legale / supportato avere un plugin strutturato in questo modo:

  • pluginName /
  • pluginName / mainfile.php
  • pluginName / supportingcode-1.php
  • pluginName / supportingcode-2.php
  • pluginName / Readme.txt
  • eccetera..

?

Q2:
In tal caso, in che modo wordpress determina quale file php è il file del plug-in principale?


Ho visto dei consigli che dicono "Strutturo il mio codice in questo modo ":

  • pluginName /
  • pluginName / mainfile.php
  • pluginName / inc / supportingcode-1.php
  • pluginName / inc / supportingcode-2.php
  • pluginName / Readme.txt
  • eccetera..

D3:
L'uso di una sottodirectory (come inc/nell'esempio sopra) è un requisito quando il codice PHP si estende su più moduli?

Q4:
È vero che dovrebbe esserci un massimo di UN file php nella directory principale del plugin?

Grazie.


Sicuramente la tua prima domanda 'In che modo WordPress determina il file PHP principale' trova risposta direttamente nella guida principale 'Scrivere un plugin' sulle intestazioni dei file
icc97

Risposte:


12

In che modo Wordpress determina "il file del plugin principale"?

È il file nel tuo plugin che contiene il commento dell'intestazione del plugin

/**
 * 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
 */

D1: È legale / supportato avere un plugin strutturato in questo modo:

Sì. Ogni struttura di directory (per quanto supportata dai server) è legale.

Q2: In tal caso, in che modo wordpress determina quale file php è il file del plug-in principale?

Vedi sopra ↑

D3: L'uso di una sottodirectory (come inc / nell'esempio sopra) è un requisito quando il codice PHP si estende su più moduli?

Requisiti? No. Più bello da leggere: sì. Più facile da mantenere: anche sì.

Q4: È vero che dovrebbe esserci un massimo di UN file php nella directory principale del plugin?

No. Semplicemente no.

Riassunto

Il modo in cui organizzi completamente i tuoi file e directory dipende da te, dalle tue preferenze personali e nient'altro. Se si desidera semplificare la manutenzione e consentire ad altri sviluppatori di esaminare il codice, è necessario utilizzare una sorta di organizzazione di file / directory.

Esempi

Personalmente aggiungo .class.phpcome estensione, quando ho preso una lezione. Noto anche i miei file esattamente come la classe. Il motivo è semplice: il mio "file plugin principale" - che è la mia bootstrapclasse, normalmente si preoccupa di caricare tutte le cose necessarie.

// 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 );
    }
}

Ciò significa che le mie classi e i miei file sono denominati come segue:

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

Faccio anche alcune organizzazioni di directory di base, come archiviare tutto js/css/img file in directory chiamate in questo modo.

Alcune persone usano (per plugin più grandi) le cartelle che hanno un nome inc/includes/assets/extensions/lib/etc.. Consiglio di utilizzare le sottocartelle solo per plugin di grandi dimensioni. Se hai altre cose come widget, ecc., Puoi usare sottocartelle specifiche per loro.

Ultima parola: No, nulla di ciò che hai trovato è vero , quelli (come le cose che ti ho mostrato) sono solo consigli.


1
Grazie per questa risposta Quindi il commento dell'intestazione è il modo in cui wordpress trova il "file plugin principale". Carica solo quello, giusto? E ovviamente qualsiasi altro file php sussidiario che è richiesto o incluso da quello. Corretta? Immagino che non mi fosse chiaro nel codice. L'ho appena riletto e vedo cosa sta dicendo ora. Vorrei che dicesse qualcosa del tipo "Wordpress cerca un file nella tua zip che ha questa intestazione speciale; ignora altri file nella zip." o qualcosa del genere. comunque grazie.
Cheeso,

Sì, carica solo i file specificati più il file "principale". Tenere presente che esistono ganci con parti specifiche della pagina, per impedire il caricamento di tutto su ogni richiesta.
Kaiser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.