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.php
como 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 bootstrap
classe, 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/img
arquivos 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.