Как ДОЛЖЕН быть структурирован каталог для плагина?

9

Я получил базовую концепцию плагина. Я прочитал статью Кодекса о написании плагина

В этой статье говорится о «основном файле плагина».

Как Wordpress определяет «основной файл плагина»?

Q1:
это законно / поддерживается иметь плагин, который структурирован так:

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / supportingcode-1.php
  • pluginname / supportingcode-2.php
  • pluginname / Readme.txt
  • так далее..

?

Q2:
Если так, как WordPress определяет, какой файл php является основным файлом плагина?


Я видел рекомендации, которые говорят: «Я структурирую свой код таким образом »:

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / вкл / supportingcode-1.php
  • pluginname / вкл / supportingcode-2.php
  • pluginname / Readme.txt
  • так далее..

В3: Требуется
ли использование подкаталога (как inc/в приведенном выше примере), когда код PHP охватывает несколько модулей?

Q4:
правда ли, что в главном каталоге плагинов должен быть максимум ОДИН php файл?

Спасибо.

Cheeso
источник
Конечно, на ваш первый вопрос «Как WordPress определяет основной файл PHP» ответ прямо в главном руководстве «Написание плагина» для заголовков файлов
icc97

Ответы:

12

Как Wordpress определяет «основной файл плагина»?

Это файл в вашем плагине, который содержит комментарий заголовка плагина

/**
 * 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: это законно / поддерживается иметь плагин, который структурирован так:

Да. Каждая структура каталогов (насколько поддерживается серверами) является законной.

Q2: Если так, как WordPress определяет, какой файл php является основным файлом плагина?

Смотри выше ↑

В3: Требуется ли использование подкаталога (например, inc / в приведенном выше примере), когда код PHP охватывает несколько модулей?

Требование? Нет, лучше читать: да. Проще поддерживать: тоже да.

Q4: правда ли, что в главном каталоге плагинов должен быть максимум ОДИН php файл?

Нет, просто нет.

Подвела

Способ организации ваших файлов и каталогов полностью зависит от вас, ваших личных предпочтений и ничего больше. Если вы хотите упростить поддержку, а другим разработчикам пошагово просматривать ваш код, то вам следует использовать какую-то организацию файлов / каталогов.

Примеры

Я лично добавляю .class.phpкак расширение, когда у меня есть класс в нем. Я также называю свои файлы точно так же, как класс. Причина проста: мой «основной файл плагина» - мой bootstrapкласс, обычно заботится о загрузке всего необходимого.

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

Это означает, что мои классы и файлы названы так:

  • settings.class.php А ТАКЖЕ settings_extended.class.php
  • my_class_prefix_settings А ТАКЖЕ my_class_prefix_settings_extended

Я также делаю некоторую базовую организацию каталогов, например, сохраняю все js/css/imgфайлы в каталогах, названных так

Некоторые люди используют (для больших плагинов) папки с именами inc/includes/assets/extensions/lib/etc.. Я бы рекомендовал использовать подпапки только для больших плагинов. Если у вас есть дополнительные вещи, такие как виджеты и т. Д., Вы можете использовать для них специальные подпапки.

Последнее слово: нет, ничего из того, что вы нашли, не является правдой , эти (как и материал, который я вам показал) являются только рекомендациями.

кайзер
источник
1
Спасибо за этот ответ. Таким образом, заголовок комментария - это способ, которым WordPress находит «основной файл плагина». Он загружает только один, правильно? И, конечно, любые другие вспомогательные файлы php, которые требуются или включены этим. Правильный? Я думаю, это просто не было ясно для меня в кодексе. Я просто перечитал это, и я вижу, что это говорит сейчас. Я хотел бы, чтобы он сказал что-то вроде «Wordpress ищет один файл в вашем zip-файле, который имеет этот специальный заголовок; он игнорирует другие файлы в zip-файле». Или что-то вдоль этих линий. в любом случае, спасибо.
Cheeso
Да, он загружает только те файлы, которые вы укажете, плюс "основной" файл. Имейте в виду, что есть хуки, которые имеют специфические части страницы, чтобы предотвратить загрузку всего при каждом запросе.
Кайзер