Отключение JS и CSS на отдельных страницах WP
Всем привет. На сайте есть куча плагинов, которые нужны только на определенных страницах (или типах записей) но подключают свои стили и скрипты глобально, от чего он тормозит... Можно ли, к примеру, в functins.php вписать какой-то код, который будет блокировать подключение локальных и внешних CSS/JS ?
Вроде такого:
if ( page_id=(123, 3844, 4857) > remove_this
{
/wp_content/plugins/someplugin/someJS.js;
/wp_content/plugins/someplugin/css.css;
https://ajax.aspnetcdn.com/jquery-ui.min.js;
}
elseif page_id=(475, 675) > remove_this
/wp_content/plugins/someplugin/other.css;
https://ajax.aspnetcdn.com/noneed.min.js;
}
elseif post_type is (costum, onemore) > remove_this
/wp_content/plugins/someplugin/deletme.css;
https://ajax.aspnetcdn.com/jquery-ui.min.js;
}
на код внимания не обращайте, я в этом "ноль", он просто для демонстрации логики)
Ответы (1 шт):
дя этого есть специальные функции wp_dequeue_style(), wp_dequeue_script()
фрагмент кода для отключения ненужных стилей-скриптов вставить в functions.php
add_action(
'wp_enqueue_scripts',
function() {
if (is_page(123) || is_page(3844) || is_page(4857)) {
// Отключаем стили
wp_dequeue_style( 'style-name' );
wp_dequeue_style( 'style-name2' );
// Отключаем скрипты
wp_dequeue_script( 'script-name' );
wp_dequeue_script( 'script-name2' );
} elseif (is_page(475) || is_page(675)) {
// Отключаем стили
wp_dequeue_style( 'style-name' );
wp_dequeue_style( 'style-name2' );
// Отключаем скрипты
wp_dequeue_script( 'script-name' );
wp_dequeue_script( 'script-name2' );
} elseif (is_singular( array( 'costum', 'onemore' )) {
// Отключаем стили
wp_dequeue_style( 'style-name' );
wp_dequeue_style( 'style-name2' );
// Отключаем скрипты
wp_dequeue_script( 'script-name' );
wp_dequeue_script( 'script-name2' );
}
},
99
);
В качестве 'style-name', 'style-name2', 'script-name', 'script-name2' указывать названия стилей-скриптов, которые используются при их подключение.
Названия скриптов и стилей хранятся в переменных $wp_scripts, $wp_styles
Добавьте в теме где-нибудь следующий фрагмент для получения названий
$result = [];
$result['scripts'] = [];
$result['styles'] = [];
// Print all loaded Scripts
global $wp_scripts;
foreach( $wp_scripts->queue as $script ) :
$result['scripts'][] = $wp_scripts->registered[$script]->src . ";";
endforeach;
// Print all loaded Styles (CSS)
global $wp_styles;
foreach( $wp_styles->queue as $style ) :
$result['styles'][] = $wp_styles->registered[$style]->src . ";";
endforeach;