¿Cómo DEBE estructurarse el directorio de un complemento?

9

Me sale el concepto básico del complemento. He leído el artículo del Codex sobre Escribir un complemento

Ese artículo habla sobre el "archivo de complemento principal".

¿Cómo determina Wordpress "el archivo de complemento principal"?

P1:
¿Es legal / compatible tener un complemento estructurado de esta manera?

  • nombre del complemento /
  • pluginname / mainfile.php
  • pluginname / supportcode-1.php
  • pluginname / supportcode-2.php
  • pluginname / Readme.txt
  • etc.

?

P2:
Si es así, ¿cómo determina Wordpress qué archivo php es el archivo de complemento principal?


He visto recomendaciones que dicen "Estructura mi código de esta manera ":

  • nombre del complemento /
  • pluginname / mainfile.php
  • pluginname / inc / supportcode-1.php
  • pluginname / inc / supportcode-2.php
  • pluginname / Readme.txt
  • etc.

P3:
¿Es inc/obligatorio el uso de un subdirectorio (como en el ejemplo anterior) cuando el código PHP abarca varios módulos?

P4:
¿Es cierto que debe haber un máximo de UN archivo php en el directorio principal del complemento?

Gracias.

Cheeso
fuente
Ciertamente, su primera pregunta '¿Cómo determina WordPress el archivo PHP principal?' Se responde directamente en la guía principal 'Escribir un complemento' en los encabezados de los archivos
icc97

Respuestas:

12

¿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.phpcomo 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 bootstrapclase, 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/imgarchivos 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.

emperador
fuente
1
Gracias por esta respuesta Por lo tanto, el comentario del encabezado es la forma en que wordpress encuentra el "archivo de complemento principal". Solo carga ese, ¿correcto? Y, por supuesto, cualquier otro archivo php subsidiario que sea requerido o incluido por ese. ¿Correcto? Supongo que no estaba claro para mí en el códice. Acabo de volver a leerlo y veo lo que dice ahora. Desearía que dijera algo como "Wordpress busca el único archivo en su zip que tiene este encabezado especial; ignora otros archivos en el zip". O algo por el estilo. gracias de todos modos.
Cheeso
Sí, carga solo los archivos que especifique más el archivo "principal". Tenga en cuenta que hay ganchos que tienen partes específicas de la página, para evitar cargar todo en cada solicitud.
kaiser