Как я могу отменить регистрацию ВСЕХ стилей сразу? И то же самое с Javascript?


Как я могу получить все стили или сценарии, поставленные в очередь, а затем отменить их регистрацию сразу?

Author: trusktr, 2011-05-13

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);
 26
Author: Hameedullah Khan, 2018-10-03 17:03:04

Вы также можете сделать это на индивидуальной основе, найдя вызываемые обработчики, найдите 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 лучше, однако, если у вас возникнут проблемы из-за того, что некоторые скрипты не загружаются, попробуйте сделать это выше.

 5
Author: Graphics Designer, 2011-11-19 12:03:47

Здравствуйте, вы также можете удалить все эти скрипты, и 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 );
 1
Author: Lenin Zapata, 2017-02-09 20:47:05

Метод Хамидуллы полезен, однако, если вы хотите, чтобы это работало только в интерфейсе сайта (например, не на панели управления 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);
 0
Author: Alex Standiford, 2018-11-14 19:56:50