Como o diretório de um plugin deve ser estruturado?

9

Eu recebo o conceito básico de plug-in. Eu li o artigo do Codex sobre como escrever um plug-in

Esse artigo fala sobre o "arquivo principal do plug-in".

Como o Wordpress determina "o arquivo principal do plug-in"?

T1:
É legal / suportado ter um plug-in estruturado da seguinte maneira:

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

?

Q2:
Se sim, como o wordpress determina qual arquivo php é o principal arquivo de plug-in?


Eu vi recomendações que dizem "Eu estruturo meu código dessa maneira ":

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

Q3:
O uso de um subdiretório (como inc/no exemplo acima) é um requisito quando o código PHP abrange vários módulos?

Q4:
É verdade que deve haver no máximo UM arquivo php no diretório principal do plug-in?

Obrigado.

Cheeso
fonte
Certamente sua primeira pergunta 'Como é que WordPress determinar o principal arquivo PHP' é respondida diretamente no principal 'Escrevendo um plugin' guia sobre cabeçalhos de arquivo
icc97

Respostas:

12

Como o Wordpress determina "o arquivo principal do plug-in"?

É o arquivo no seu plug-in que contém o comentário do cabeçalho do plug-in

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

T1: É legal / suportado ter um plug-in estruturado da seguinte maneira:

Sim. Toda estrutura de diretório (na medida em que é suportada pelos servidores) é legal.

Q2: Se sim, como o wordpress determina qual arquivo php é o principal arquivo de plug-in?

Veja acima ↑

Q3: O uso de um subdiretório (como inc / no exemplo acima) é um requisito quando o código PHP abrange vários módulos?

Requerimento? Não. Melhor ler: sim. Mais fácil de manter: Também sim.

Q4: É verdade que deve haver no máximo UM arquivo php no diretório principal do plug-in?

Não. Simplesmente não.

Resumido

A maneira como você organiza seus arquivos e diretórios completamente depende de você, suas preferências pessoais e nada mais. Se você deseja facilitar a manutenção e outros desenvolvedores percorrerem seu código, use algum tipo de organização de arquivos / diretórios.

Exemplos

Eu pessoalmente acrescento .class.phpcomo extensão, quando recebi uma aula. Também nomeio meus arquivos exatamente como a classe. O motivo é simples: meu "arquivo principal de plug-in" - que é minha bootstrapclasse, normalmente se preocupa em carregar todo o material necessário.

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

Isso significa que minhas classes e arquivos são nomeados da seguinte maneira:

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

Eu também faço uma organização básica de diretórios, como armazenar todos os js/css/imgarquivos em diretórios assim nomeados.

Algumas pessoas usam pastas (para plugins maiores) nomeadas inc/includes/assets/extensions/lib/etc.. Eu recomendo usar subpastas apenas para plugins grandes. Se você tiver itens adicionais, como widgets, etc., poderá usar subpastas específicas para eles.

Última palavra: não, nada do que você encontrou é verdadeiro ; esses (como o que eu mostrei a você) são apenas recomendações.

kaiser
fonte
11
Obrigado por esta resposta. Portanto, o comentário do cabeçalho é a maneira como o wordpress encontra o "arquivo principal do plug-in". Carrega apenas aquele, correto? E, claro, quaisquer outros arquivos php subsidiários que sejam necessários ou incluídos por esse. Corrigir? Eu acho que não estava claro para mim no códice. Acabei de reler e vejo o que está dizendo agora. Eu gostaria que ele dissesse algo como "O Wordpress procura o arquivo no seu zip que possui esse cabeçalho especial; ele ignora outros arquivos no zip". Ou algo nesse sentido. de qualquer maneira obrigado.
Cheeso
Sim, ele carrega apenas os arquivos especificados, além do arquivo "principal". Esteja ciente de que existem ganchos com partes específicas da página, para evitar carregar tudo em cada solicitação.
kaiser