Comment Wordpress détermine-t-il "le fichier de plugin principal"?
C'est le fichier de 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 / pris en charge d'avoir un plugin qui est 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: Dans l'affirmative, comment wordpress détermine-t-il quel fichier php est le fichier 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? Non. Plus agréable à lire: oui. Plus facile à entretenir: également oui.
Q4: Est-il vrai qu'il devrait y avoir au maximum UN fichier php dans le répertoire principal du plugin?
Non, tout simplement pas.
Résumé
La façon 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, vous devez utiliser une sorte d'organisation de fichiers / répertoires.
Exemples
Personnellement, j'ajoute en .class.php
tant qu'extension, quand j'ai obtenu un cours en elle. Je nomme également mes fichiers exactement comme la classe. La raison est simple: mon "fichier de plugin principal" - qui est ma bootstrap
classe, se soucie normalement de charger toutes les choses 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 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 fais également une organisation de base des répertoires, comme le stockage de tous les js/css/img
fichiers dans des répertoires nommés comme ceci.
Certaines personnes utilisent (pour un plugin plus grand) des dossiers nommés inc/includes/assets/extensions/lib/etc.
. Je recommanderais d'utiliser des sous-dossiers pour les gros plugins uniquement. Si vous avez des éléments supplémentaires comme des widgets, etc., vous pouvez utiliser des sous-dossiers spécifiques pour eux.
Dernier mot: non, rien de ce que vous avez trouvé n'est vrai , ceux-ci (comme les trucs que je vous ai montrés) ne sont que des recommandations.