Intereting Posts
Экспорт пользовательских CSV-продуктов Woocommerce Сообщение об ошибке «Страница, которую вы ищете временно недоступна» после редактирования файла Запрос между двумя мета-ключами Установка переменной для использования на странице перенаправления Пользовательская таксономия с пользовательскими типами сообщений Нет сообщений пытаясь использовать wp_handle_upload с ajax Добавление сводки страницы на определенную страницу Изменение порядка фильтров Переписать правила для короткого URL-адреса Приоритет для таблицы стилей детской темы Устранение дубликатов сообщений между двумя петлями на главной странице У меня нет комментариев.php … как настроить мои поля комментариев Пользовательский запрос: запрос по пользовательским метаданным Какая польза от wp_schedule_event hook? Измените HTML-форму комментария, которая генерируется где-то из основного WordPress

Использование действий, перехватов и фильтров на странице, отличной от WordPress.

У меня есть php-скрипт, который находится вне wordpress, но загружает ядро ​​WP с помощью wp-load.php.

Вот моя основная страница:

<?php define('WP_USE_THEMES', false); global $wp, $wp_query, $wp_the_query, $wp_did_header; require_once('wp-load.php'); switch_to_blog(1); //make sure we're on the top level site $author_id = 77; //admin ?> 

Однако это также загружает плагины – один из которых (FacetWP) выдает ошибку. Поскольку мне это не нужно, я думал, что деактивирую его:

 function deactivate_plugin_conditional() { deactivate_plugins('facetwp/index.php'); } add_action( 'admin_init', 'deactivate_plugin_conditional' ); 

Однако, похоже, это не сработало, поэтому я подумал, что попробую простое эхо:

 function myDebug() { echo "test"; } add_action( 'init', 'myDebug', 10, 1 ); 

Это тоже не сработало, поэтому я не понимаю, как использовать эти вызовы API. Любая помощь в решении этой проблемы будет высоко оценена.

Это уловка 22 – вам нужен WordPress для использования системы hook, но init будет уже запущен во время загрузки (точнее, wp-settings.php ).

Я бы создал плагин MU «Использовать» ( wp-content/mu-plugins/any-filename.php ) для всех ваших функций «вне WordPress», с чем-то вроде этого в начале:

 if ( ! defined( 'LOADED_EXTERNAL' ) || ! LOADED_EXTERNAL ) return; /** * Better technique for temporarily disabling a plugin on-the-fly. * * @param array $plugins * @return array */ function wpse_147541_active_plugins( $plugins ) { if ( $plugin = array_search( 'facetwp/index.php', $plugins ) ) unset( $plugins[ $plugin ] ); return $plugins; } add_filter( 'option_active_plugins', 'wpse_147541_active_plugins' ); // More awesome code! 

А затем в вашем внешнем файле:

 define( 'LOADED_EXTERNAL', true ); require 'wp-load.php'; // No need for globalising variables, they'll all be in scope 

Причина, по которой я выступаю за плагин MU, заключается в том, что они запускаются до обычных плагинов, поэтому у вас будет время перехватить «FacetWP» (или любые другие плагины, если на то пошло), от загрузки.