Как ПРЕДОТВРАТИТЬ плагин для запуска на КОНКРЕТНОЙ СТРАНИЦЕ? - PullRequest
0 голосов
/ 30 октября 2019

Я ищу решение, которое НЕ активирует определенный плагин на ОДНОЙ СТРАНИЦЕ.

Я попытался поиграться с прикрепленным кодом (предложенным @Kamil Grzegorczyk для Wordpress Disable Pluginна определенных страницах / сообщениях ), но безуспешно.

add_filter( 'option_active_plugins', 'lg_disable_cart66_plugin' );

 function lg_disable_cart66_plugin($plugins){

      if(strpos($_SERVER['REQUEST_URI'], '/store/') === FALSE AND strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === FALSE) {
         $key = array_search( 'cart66/cart66.php' , $plugins );
         if ( false !== $key ) unset( $plugins[$key] );
      }

     return $plugins;
 }

Я также пытался нам организовать плагин, но это не помогает НЕ активировать определенный плагин наОДНА СТРАНИЦА.

Кстати, если кто-то получил код, который может активировать только определенные плагины, такие как Форма контакта № 7, путем отслеживания их шорткода на посте / странице, которая будет блестящей! Примерно так: если у x page / post есть шорткод, который содержит «контактную форму № 7», то активируйте плагин «Контактная форма № 7», иначе не активируйте.

В любом случае, на этом этапе простое решение будетделай:)

Спасибо.

1 Ответ

0 голосов
/ 31 октября 2019

"Кстати, если кто-то получил код, который может активировать только определенные плагины, такие как контактная форма № 7, путем отслеживания их шорткода на записи / странице, которая будет блестящей! Что-то вроде, если x page / post имеет шорткод, содержащий 'Форма контакта № 7 ', затем активируйте плагин Форма контакта № 7, иначе не активируйте. "- Это невозможно. Считывание исходного кода wp-blog-header.php должно прояснить это.

$wp_did_header = true;

// Load the WordPress library.
require_once( dirname( __FILE__ ) . '/wp-load.php' );

// Set up the WordPress query.
wp();

// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );

Плагины загружаются с помощью wp-settings.php, который загружаетсясор-load.php. Почтовое содержимое запроса извлекается из базы данных с помощью WP :: query_posts (), которая вызывается функцией wp (). Итак, плагины уже загружены еще до того, как содержимое публикации будет извлечено из базы данных.

Куда вы положили код :

add_filter ('option_active_plugins', 'lg_disable_cart66_plugin');

Его нельзя вставить в обычный плагин , так как он должен запускать ДО плагинов. (Вы не можете указать плагину не загружать код, который уже загружен.) Он также не может быть помещен в functions.php, так как загружен functions.php ПОСЛЕ плагины загружены. Вы читали комментарий о mu-плагинах? плагины «необходимо использовать» загружаются перед обычными плагинами. Все это можно найти в wp-settings.php - я настоятельно рекомендую прочитать его - его легко прочитать, и вы поймете, как WordPress инициализирует себя.

...