Intereting Posts
Как исправить ошибку в цикле WordPress? Обновлен до последней версии – 3.0.3 и теперь я получаю сообщение «достаточные разрешения для доступа к этой странице» Как определить WP_DEBUG как true вне wp-config.php? Могу ли я отключить автозаполнение? Как добавить captcha для публикации виджета Задайте шаблон страницы по умолчанию для загрузки для нескольких сайтов SEO не работает на страницах Входное значение из метаболизма не найдено в $ _POST после сохранения сообщения Извлечение данных из базы данных в таблицу, например комментариев в панели управления администратора Добавление настраиваемого поля в редактор изображений Может ли плагин добавлять содержимое заголовка / нижнего колонтитула / тела? Шаблоны страниц не работают, несмотря на правильность ссылок Какой URL-адрес вы передаете wp_remote_get для загрузки тела предварительного просмотра текущего сообщения? Ajax загрузить больше кнопки для комментариев wordpress Что здесь не так? Проблема с post_id и meta_value

Как вам потребуется и автоматически загружать зависимые плагины?

Интересно, был ли класс или метод программирования, который позволил бы мне проверить установку и активацию определенного плагина, и если указанный плагин не был установлен, чтобы загрузить его из репозитория WordPress?

У меня есть плагин, который я бы хотел использовать плагин Post 2 Post scribu, и мне было интересно, как это можно сделать?

Solutions Collecting From Web of "Как вам потребуется и автоматически загружать зависимые плагины?"

Я бы рекомендовал против этого, но я понимаю, что вы пытаетесь сделать и что-то подобное себе.

Как я это делаю

Я создаю темы, которые зависят от плагинов, плагинов, которые зависят от плагинов и плагинов, которые зависят от плагинов, которые зависят от других плагинов. Если я контролирую обе стороны разработки, я делаю что-то в двух частях …

В плагине, который потребуется от чего-то еще:

add_filter( 'my-cool-plugin-name-installed', '__return_true' ); 

В плагине / теме, которая потребует другого плагина :

 if ( ! apply_filters( 'my-cool-plugin-name-installed', false ) ) add_action( 'admin_notices', 'my-cool-plugin-name_not_installed' ); 

Затем я добавляю яркое сообщение «Пожалуйста, установите мой супер-классный плагин» в верхней части экрана администратора со ссылкой на страницу загрузки.

Это дает мне верный способ проверить, что мои зависимости существуют и установлены. Если плагин установлен, но не активирован, предупреждение все же появляется.

Другой путь

Другой вариант уже был рекомендован @tollmanz. Я не буду копировать его решение, но проверка наличия основной функции вашего зависимого плагина – отличный способ убедиться, что он есть.

Еще раз, если плагин установлен, но неактивен, этот маршрут будет определять только если он активен.

Почему я так делаю

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

Кроме того, несколько пользователей моего кода находятся на серверах, где они не могут использовать установщик с одним щелчком мыши (или автоматическую загрузку вообще). У них есть плагины FTP для их установки, поэтому беззвучная система загрузки и активации-активации не будет работать вообще.

Наконец, если вы работаете с чужим кодом, у вас есть 0 контроль над тем, когда они отправляют новые выпуски, если они вводят ошибки, или если они взломаны . Поэтому не устанавливайте автоматически код, за который вы не можете требовать ответственности.

Мой метод обработки подобной ситуации состоял в том, чтобы искать основной класс или функцию в зависимостях плагина и проверить, существует ли он. Например, я построил плагин, зависящий от плагина Simple Term Meta. Я проверил его, используя:

 if(!function_exists('simple_term_meta_install')) { // Do stuff to download plugin } 

В моем плагине я просто упаковал плагин с моим плагином. Я бы только запускал его, если он еще не был установлен.

Другой вариант – пригласить пользователя загрузить плагин и установить его.

С точки зрения того, как вы будете загружать его автоматически … Я не знаю. Я бы посмотрел, как ядро ​​WP управляет этим и пытается собрать некоторые знания из встроенной системы.

Следуя идее уведомления EAMann, вы можете добавить ссылку в уведомлении администратора, которая приведет администратора к странице результатов поиска в Add Plugin. Поскольку указанное имя является точным именем, оно будет указано первым в результатах. Все, что вам нужно, это щелкнуть ссылку «Установить сейчас».

 function posts_2_posts_required() { $url = network_admin_url( 'plugin-install.php?tab=search&type=term&s=Posts+2+Posts&plugin-search-input=Search+Plugins' ); echo ' <div class="error"> <p>The <a href="' . $url . '">Posts 2 Posts Plugin</a> is required.</p> </div> '; } function check_required_plugins() { if ( current_user_can( 'activate_plugins' ) ) { include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if ( ! is_plugin_active( 'posts-2-posts/posts-2-posts.php' ) ) add_action( 'admin_notices', 'posts_2_posts_required' ); } } add_action( 'plugins_loaded', 'check_required_plugins' ); 

Чтобы получить доступ к current_user_can (), вам нужно дождаться загрузки плагинов, следовательно, действие plugins_loaded. Функция network_admin_url () вернет правильный URL независимо от того, настроен ли ваш сайт как многоузловой или нет.