Использование Действий, Перехватчиков И Фильтров На Странице, Отличной От Wordpress.

  • Автор темы Avvor
  • Обновлено
  • 20, Oct 2024
  • #1

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

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

 
 
 function myDebug() {

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

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

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

Однако, похоже, это не сработало, поэтому я решил попробовать простое эхо:

<?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 ?>

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

#hooks #actions #api #wp-load.php #deactivated-plugin

Avvor


Рег
12 Jan, 2004

Тем
100

Постов
208

Баллов
728
  • 25, Oct 2024
  • #2

Это подвох 22: вам нужен WordPress, чтобы использовать систему перехватчиков, но

 
 define( 'LOADED_EXTERNAL', true );
require 'wp-load.php'; // No need for globalising variables, they'll all be in scope
 
will have already fired during load ( 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! если быть точным).

Я бы создал плагин MU «Must Use» ( wp-content/mu-plugins/any-filename.php ) for all your "outside of WordPress" functionality, with something like this at the start:

wp-settings.php

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

init

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

 

Nickolay3


Рег
19 Aug, 2014

Тем
77

Постов
167

Баллов
582
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно