Intereting Posts
Показывать только похожие сообщения, когда другая должность имеет такой же срок Theme Customizer – Пользовательский раздел Дисплей, но ничего не делает Нет данных, полученных после загрузки темы Мой WordPress дает мне ошибку 403 при сохранении сообщения / проекта с конкретными словами Добро пожаловать Email Заказ по нескольким мета-ключам и метазначению Переместите ссылку «Меню» из «Внешний вид»> «Меню» на свою вкладку в левой колонке «Панель управления» и плагин отображает над плагинами страницу Эхо несколько задач, если существует общая функция Настроить запрос с несколькими категориями в пользовательском порядке? Различные ленты WordPress для одного и того же блога Как добавить условие в цикл wordpress? Создание расширяемого плагина WordPress favouriting – один сериализованный массив метазначений или множество метаданных Как получить текущую страницу Заголовок и URL страницы в footer.php Пользовательская функция вызывает ошибку 503 через пару часов

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

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

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

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

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

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

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

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 независимо от того, настроен ли ваш сайт как многоузловой или нет.