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

9

Eu recebo o conceito básico de plugins. Eu li o artigo do Codex em Escrevendo um Plugin

Esse artigo fala sobre o "arquivo principal do plugin".

Como o Wordpress determina "o arquivo principal do plugin"?

Q1:
É legal / suportado ter um plugin estruturado assim:

  • 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 arquivo principal do plugin?

Eu vi recomendações que dizem "Eu estruturo meu código desta forma ":

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / inc / supportingcode-1.php
  • pluginname / inc / supportingcode-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 se estende vários módulos?

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

Obrigado.

    
por Cheeso 19.06.2012 / 03:19

1 resposta

12
  

Como o Wordpress determina "o arquivo principal do plugin"?

É o arquivo no seu plugin que contém o comentário do cabeçalho do 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: É legal / suportado ter um plug-in estruturado assim:

Sim. Todas as estrutura de diretórios (desde que suportadas por servidores) são legais.

  

Q2: Se sim, como o wordpress determina qual arquivo php é o arquivo principal do plugin?

Veja acima ↑

  

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

Requisito? 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 plugin?

Não. Simplesmente não.

Resumido

A forma como você está organizando seus arquivos e diretórios é totalmente sua, suas preferências pessoais e nada mais. Se você quiser tornar mais fácil para você manter e para outros desenvolvedores percorrerem seu código, você deve usar algum tipo de organização de diretório / arquivo.

Exemplos

Eu, pessoalmente, acrescento .class.php como extensão, quando recebi uma aula. Eu também nomeio meus arquivos exatamente como a classe. O motivo é simples: Meu "arquivo de plug-in principal" - que é minha classe bootstrap , normalmente se preocupa em carregar todas as coisas necessárias.

// 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 têm o seguinte nome:

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

Eu também faço uma organização básica de diretórios, como armazenar todos os arquivos js/css/img em diretórios com nomes como esse.

Algumas pessoas usam (para plugins maiores) as pastas nomeadas inc/includes/assets/extensions/lib/etc. . Eu recomendaria usar subpastas somente 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 é true , essas (como as coisas que mostrei para você) são apenas recomendações.

    
por kaiser 19.06.2012 / 03:44