ЯК ПОВИНЕН бути структурований каталог для плагіна?


9

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

У цій статті йдеться про "основний файл плагінів".

Як Wordpress визначає "основний файл плагіна"?

Q1:
чи законно / підтримується плагін, структурований так:

  • Плагін /
  • плагін / mainfile.php
  • плагін / supportcode-1.php
  • плагін / supportcode-2.php
  • плагін / Readme.txt
  • тощо.

?

Q2:
Якщо так, як wordpress визначає, який файл php є основним файлом плагіна?


Я бачив рекомендації, які говорять "Я структурую свій код таким чином ":

  • Плагін /
  • плагін / mainfile.php
  • плагін / inc / supportcode-1.php
  • плагін / inc / supportcode-2.php
  • плагін / Readme.txt
  • тощо.

Q3:
Чи необхідність використання підкаталогу (як inc/у наведеному вище прикладі), коли код PHP охоплює декілька модулів?

Q4:
Чи правда, що в головному каталозі плагінів має бути не більше одного файлу php?

Дякую.


Безумовно, на ваше перше питання "Як 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 є основним файлом плагіна?

Дивіться вище ↑

Q3: Чи необхідність використання підкаталогу (наприклад, 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". або щось у цьому напрямку. все одно дякую.
Чесо

Так, він завантажує лише ті файли, які ви вказали плюс "головний" файл. Будьте в курсі, що є гачки, які містять певні сторінки, щоб запобігти завантаженню кожного запиту.
кайзер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.