Как я могу отменить регистрацию ВСЕХ стилей сразу? И то же самое с Javascript?
Как я могу получить все стили или сценарии, поставленные в очередь, а затем отменить их регистрацию сразу?
4 answers
Я надеюсь, вы знаете, что делаете. Вы можете использовать wp_print_styles
и wp_print_scripts
действие зацепляет, а затем получает глобальный $wp_styles
и $wp_scripts
объектные переменные в их соответствующих крючках.
В атрибуте "зарегистрированный" перечислены зарегистрированные сценарии, а в атрибуте "очередь" перечислены сценарии, поставленные в очередь на обоих вышеперечисленных объектах.
Пример кода для очистки очереди сценариев и стилей.
function pm_remove_all_scripts() {
global $wp_scripts;
$wp_scripts->queue = array();
}
add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);
function pm_remove_all_styles() {
global $wp_styles;
$wp_styles->queue = array();
}
add_action('wp_print_styles', 'pm_remove_all_styles', 100);
Вы также можете сделать это на индивидуальной основе, найдя вызываемые обработчики, найдите wp_enqueue_style
или wp_enqueue_script
вы можете отменить их регистрацию таким образом на своем functions.php
add_action( 'wp_print_styles', 'my_deregister_styles', 100 );
function my_deregister_styles() {
wp_deregister_style( 'some-css' );
}
add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
wp_deregister_script( 'tutorials-js' );
wp_deregister_script( 'gsc_dialog' );
wp_deregister_script( 'gsc_jquery' );
}
Решение Hameedullah лучше, однако, если у вас возникнут проблемы из-за того, что некоторые скрипты не загружаются, попробуйте сделать это выше.
Здравствуйте, вы также можете удалить все эти скрипты, и wordpress будет работать правильно. Так как Wordpress позволяет удалить все скрипты, а те, которые ему нужны, удалить нельзя. Аудио-скрипт и другие являются дополнительными функциями скрипта, поэтому это не вызовет проблем в вашем wordpress.
/**
* Dequeue the Parent Theme scripts or plugin.
*
* Hooked to the wp_print_scripts action, with a late priority (100),
* so that it is after the script was enqueued.
*/
function my_site_WI_dequeue_script() {
wp_dequeue_script( 'comment-reply' ); //If you're using disqus, etc.
wp_dequeue_script( 'jquery_ui' ); //jQuery UI, no thanks!
wp_dequeue_script( 'fancybox' ); //Nah, I use FooBox
wp_dequeue_script( 'wait_for_images' );
wp_dequeue_script( 'jquery_easing' );
wp_dequeue_script( 'swipe' );
wp_dequeue_script( 'waypoints' );
}
add_action( 'wp_print_scripts', 'my_site_WI_dequeue_script', 99 );
Метод Хамидуллы полезен, однако, если вы хотите, чтобы это работало только в интерфейсе сайта (например, не на панели управления WordPress), вам нужно добавить условие, чтобы заставить его выйти из игры раньше.
Для этого я использую проверку, упомянутую в этом вопросе вместе с is_admin()
.
function pm_remove_all_scripts(){
if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're
global $wp_scripts;
$wp_scripts->queue = array();
}
add_action('wp_print_scripts', 'pm_remove_all_scripts', 100);
function pm_remove_all_styles(){
if(in_array($GLOBALS['pagenow'], ['wp-login.php', 'wp-register.php']) || is_admin()) return; //Bail early if we're
global $wp_styles;
$wp_styles->queue = array();
}
add_action('wp_print_styles', 'pm_remove_all_styles', 100);