Ответ 1
Каждый раз, когда AJAX-запрос обслуживается WordPress, загружаются все ядро WordPress, активная тема и все активные плагины. Мы можем сократить эти накладные расходы, исключив определенные плагины из загрузки для определенных запросов, используя плагин Must Use.
Итак, для оптимизации загрузки над плагинами, которые не нужны для запроса AJAX. вы должны игнорировать некоторые плагины. Вы можете использовать MU (обязательно) codex для загрузки только тех плагинов, которые нуждаются в целом веб-сайте.
Плагины MU сильно отличаются от обычных плагинов WordPress. Они устанавливаются в специальной/wp-content/mu-plugins/папке отдельно от обычных плагинов. Они активны до тех пор, пока они находятся в этой папке. Чтобы отключить их, вам необходимо удалить их из этой папки. Плагин MU также выполняется до загрузки плагинов.
Вот почему мы используем плагин MU. Мы можем опередить загрузку обычных плагинов и контролировать, какие из них загружены.
Наш плагин MU в этом случае состоит из одной функции:
function wpmdbc_exclude_plugins( $plugins ) {
if ( !defined( 'DOING_AJAX' ) || !DOING_AJAX || !isset( $_POST['action'] ) || false === strpos( $_POST['action'], 'wpmdb' ) ) return $plugins;
$wpmdb_settings = get_option( 'wpmdb_settings' );
if ( !empty( $wpmdb_settings['blacklist_plugins'] ) ) {
$blacklist_plugins = array_flip( $wpmdb_settings['blacklist_plugins'] );
}
foreach( $plugins as $key => $plugin ) {
if ( false !== strpos( $plugin, 'wp-migrate-db-pro' ) || !isset( $blacklist_plugins[$plugin] ) ) continue;
unset( $plugins[$key] );
}
return $plugins;
}
add_filter( 'option_active_plugins', 'wpmdbc_exclude_plugins' );
Как вы можете видеть, они подключались к фильтру. Поэтому, когда get_option ('active_plugins');, эта функция будет выполнена и может изменять, какие плагины активны.
Первый условный оператор обеспечивает обработку запроса WP Migrate DB Pro AJAX, и если мы не залогом, позволяя WordPress выполнять запрос как обычно, загружая все активные плагины.
Вторая часть функции проходит через список активных плагинов и проверяет несколько условий. Проверьте, не включен ли плагин в наш черный список плагинов. Если это так, мы просто удаляем его из списка активных плагинов, не позволяя ему загружаться, когда WordPress загружает активные плагины.