Intereting Posts
Пользовательский тип метабокса типа сообщения Как найти другого пользователя в buddypress? как создать короткие кодовые слова? Symlink плагин в локальной разработке, работает, но получил сообщение об ошибке Debug – Windows 10 Отдельный контент из галереи (пользовательский тип сообщения) WordPress показывает ссылку для регистрации для не зарегистрированных пользователей Woocommerce: изменить роль пользователя после завершения заказа Отображать все значения настраиваемого поля, созданного с помощью ACF на странице Пользовательский тип сообщения (Jigoshop): неожиданное значение для $ category_id (через $ term-> term_taxonomy_id) на реальном сервере Пользовательский метафайл поля пользователя Показать меню на боковой панели, если на конкретной странице и конкретной роли пользователя (is_page, current_user_can) Статическая передняя страница – против зерна Как сделать переменные wp_localize_script доступными для дочерней темы? для моей текущей темы (собственный пользовательский) параметры меню по умолчанию отключены в wp-admin? Вход для WordPress и регистрация

add_theme_support с помощью плагина

Я хочу создать тематический плагин для темы, основанной на opern-source Bootstrap Genesis, где я могу использовать функцию add_theme_support для добавления или удаления нескольких мини-плагинов или модулей / функций темы, которые у меня есть в add_theme_support плагина. Я нашел этот вопрос здесь , но не мог понять это на основе принятого ответа.

Таким образом, структура плагина будет выглядеть так:

 themeplugin/ ├── addons/ │ ├── addon1.php │ ├── addon2.php │ └── addon3.php └── themeplugin.php 

Основной файл плагина, назовем его themeplugin.php :

 <?php /* Plugin Name: My Theme Name Addons Plugin URI: https://example.com Description: A collection of mini plugins/addons to apply specific changes. Version: 1.0 Author: Author Name Author URI: https://example.com/author License: MIT License License URI: http://opensource.org/licenses/MIT */ function load_themename_addons() { foreach (glob(__DIR__ . '/addons/*.php') as $file) { if (current_theme_supports('themename-' . basename($file, '.php'))) { require_once $file; } } } add_action('after_setup_theme', 'load_themename_addons'); 

Тогда в моих functions.php я мог бы включить эти функции / дополнения плагина, добавив поддержку темы, используя каждое имя файла addons:

 <?php /* functions.php */ add_theme_support('themename-addon1.php'); add_theme_support('themename-addon1.php'); add_theme_support('themename-addon1.php'); 

Тем не менее, это не работает, и я не могу понять, что мне не хватает … Когда я удаляю поддержку поддержки темы, это прекрасно работает:

 function load_themename_addons() { foreach (glob(__DIR__ . '/addons/*.php') as $file) { require_once $file; } } add_action('after_setup_theme', 'load_themename_addons'); 

Выяснилось, что после игры с Rarsts ответьте здесь .

Вот что я закончил :

  <?php /* Plugin Name: Bootstrap Genesis Addons Plugin URI: https://github.com/bryanwillis/bootstrap-genesis-addons Description: A collection of mini plugins/addons to apply specific changes to my site. Version: 1.0 Author: Bryan Willis Author URI: https://github.com/bryanwillis/ License: MIT License License URI: http://opensource.org/licenses/MIT */ function bootstrap_genesis_addons() { global $_wp_theme_features; foreach (glob(__DIR__ . '/addons/*.php') as $file) { $feature = 'bsg-' . basename($file, '.php'); if (isset($_wp_theme_features[$feature])) { require_once $file; } } } add_action('after_setup_theme', 'bootstrap_genesis_addons', 100); 

Плагин темы должен следовать этой файловой структуре:

 bsg-addons/ ├── addons/ │ ├── foo.php │ ├── bar.php │ └── baz.php └── bsg-addons.php 

Все аддоны должны быть добавлены в подпапку под названием addons с уникальным именем для каждого файла.

Последнее добавление поддержки тем же способом, что и вы:

 add_theme_support('bsg-foo'); 

Где приведенное выше название темы поддерживает имя «bsg-» + «foo», где «foo» – это одно из базовых имен файлов, созданных вами в папке аддонов: bsg-addons/addons/foo.php

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