web-dev-qa-db-fra.com

Comment le répertoire d'un plugin DOIT-il être structuré?

Je comprends le concept de base du plugin. J'ai lu l'article du Codex sur Écrire un plugin

Cet article parle du "fichier plugin principal".

Comment Wordpress détermine-t-il "le fichier du plugin principal"?

Q1:
Est-il légal/pris en charge d’avoir un plugin structuré comme ceci:

  • nom du plugin /
  • pluginname/mainfile.php
  • pluginname/supportcode-1.php
  • pluginname/supportcode-2.php
  • pluginname/Readme.txt
  • etc..

?

Q2:
Si oui, comment wordpress détermine-t-il quel fichier php est le fichier de plugin principal?


J'ai vu des recommandations qui disent "je structure mon code de cette façon ":

  • nom du plugin /
  • pluginname/mainfile.php
  • pluginname/inc/supportcode-1.php
  • pluginname/inc/supportcode-2.php
  • pluginname/Readme.txt
  • etc..

Q3:
L'utilisation d'un sous-répertoire (comme inc/ dans l'exemple ci-dessus) est-elle obligatoire lorsque le code PHP s'étend sur plusieurs modules?

Q4:
Est-il vrai qu'il devrait y avoir un maximum de UN fichier php dans le répertoire principal du plugin?

Merci.

9
Cheeso

Comment Wordpress détermine-t-il "le fichier du plugin principal"?

C'est le fichier dans votre plugin qui contient le commentaire d'en-tête du 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
 */

Q1: Est-il légal/supporté d'avoir un plugin structuré comme ceci:

Oui. Chaque structure de répertoire (dans la mesure où elle est prise en charge par les serveurs) est légale.

Q2: Si tel est le cas, comment wordpress détermine-t-il quel fichier php est le fichier de plugin principal?

Voir ci-dessus ↑

Q3: L'utilisation d'un sous-répertoire (comme inc/dans l'exemple ci-dessus) est-elle obligatoire lorsque le code PHP s'étend sur plusieurs modules?

Exigence? N ° plus agréable à lire: oui. Plus facile à maintenir: oui aussi.

Q4: Est-il vrai qu'il devrait y avoir un maximum de UN fichier php dans le répertoire principal du plugin?

Non, simplement non.

Résumé

La manière dont vous organisez complètement vos fichiers et répertoires dépend de vous, de vos préférences personnelles et de rien d’autre. Si vous souhaitez faciliter la maintenance et permettre aux autres développeurs de parcourir votre code, utilisez une sorte d'organisation de fichiers/répertoires.

Exemples

Personnellement, j’ajoute .class.php en tant qu’extension, lorsque j’ai un cours. Je nomme également mes fichiers exactement comme pour la classe. La raison en est simple: Mon "fichier de plugin principal" - qui est ma classe bootstrap, se charge normalement de charger tous les éléments nécessaires.

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

Cela signifie que mes classes et mes fichiers sont nommés comme suit:

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

Je m'occupe également de l'organisation des répertoires de base, comme de stocker tous les fichiers js/css/img dans des répertoires nommés comme ceci.

Certaines personnes utilisent (pour les plus gros plugins) des dossiers nommés inc/includes/assets/extensions/lib/etc.. Je recommanderais d'utiliser des sous-dossiers uniquement pour les gros plugins. Si vous avez des éléments supplémentaires tels que des widgets, etc., vous pouvez utiliser des sous-dossiers spécifiques.

Dernier mot: Non, rien de ce que vous avez trouvé n'est vrai , ceux-là (comme ce que je vous ai montré ) ne sont que des recommandations.

12
kaiser