¿Cómo determina Wordpress "el archivo de complemento principal"?
Es el archivo en su complemento que contiene el comentario del encabezado del complemento
/**
* 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
*/
P1: ¿Es legal / compatible tener un complemento estructurado de esta manera?
Si. Toda estructura de directorios (en la medida en que los servidores lo admitan) es legal.
P2: Si es así, ¿cómo determina Wordpress qué archivo php es el archivo de complemento principal?
Ver arriba ↑
P3: ¿Es obligatorio el uso de un subdirectorio (como inc / en el ejemplo anterior) cuando el código PHP abarca varios módulos?
¿Requisito? No. Más agradable de leer: sí. Más fácil de mantener: también sí.
P4: ¿Es cierto que debe haber un máximo de UN archivo php en el directorio principal del complemento?
No. Simplemente no.
Resumió
La forma en que está organizando sus archivos y directorios completamente depende de usted, sus preferencias personales y nada más. Si desea que sea más fácil para usted mantener y que otros desarrolladores revisen su código, entonces debe usar algún tipo de organización de archivos / directorios.
Ejemplos
Personalmente agrego .class.php
como extensión, cuando recibí una clase en ella. También nombro mis archivos exactamente como la clase. La razón es simple: mi "archivo de complemento principal", que es mi bootstrap
clase, normalmente se preocupa por cargar todas las cosas necesarias.
// 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 );
}
}
Esto significa que mis clases y archivos se nombran de la siguiente manera:
settings.class.php
Y settings_extended.class.php
my_class_prefix_settings
Y my_class_prefix_settings_extended
También hago una organización básica de directorios, como almacenar todos los js/css/img
archivos en directorios con este nombre.
Algunas personas usan (para complementos más grandes) carpetas con nombres inc/includes/assets/extensions/lib/etc.
. Recomiendo usar subcarpetas solo para complementos grandes. Si tiene cosas adicionales como widgets, etc., puede usar subcarpetas específicas para ellos.
Última palabra: No, nada de lo que has encontrado es cierto , esas (como las cosas que te mostré) son solo recomendaciones.