У меня проблемы с удалением (wp_dequeue_style) всех таблиц стилей, загруженных на сайт WP. Я хочу удалить все загруженные стили с целью воссоздать новый стиль, который можно лучше контролировать и оптимизировать, и уменьшить 68 запросов до 1 .
Но прежде чем я углублюсь в это , Я немного скажу об используемых инструментах.
Я использую Wordpress v5.4.1 на сервере с Apache 7.2.30. Тема WP - MasterStudy Child, и используются следующие плагины:
- Breadcrumb NavXT
- BuddyPress
- Контактная форма 7
- GamiPress
- GTmetrix для WordPress
- WPBakery Page Builder
- MasterStudy LMS Система управления обучением PRO
- MasterStudy LMS
- Платное членство Pro
- Slider Revolution
- Соответствие GDPR ie Согласие
- Конфигурации STM
- Менеджер переходных процессов
- UpdraftPlus - Резервное копирование / восстановление
- WooCommerce
- WordPress Importer
- WP Reset
- Query Monitor
Я могу получить список всех помещенных в очередь CSS таблиц стилей, используя 3 метода: 1. Chrome Inspector - вкладка Network 2. Query Monitor 3. Нижеприведенный сценарий, используемый в функциях. php родительской темы
function remove_theme_head_styles() {
global $wp_styles;
echo "<h2>Enqueued CSS Stylesheets</h2>";
foreach( $wp_styles->queue as $handle ) :
echo $handle . ", ";
endforeach;
}
add_action( 'wp_enqueue_scripts', 'remove_theme_head_styles', 9000 );
Результаты будут следующими:
Метод 1 (Chrome): 68 запросов, хотя некоторые из них дублируются
* 105 6 * Метод 2 (Монитор запросов): 66 стилей
Метод 3 (php скрипт): 52 результата
Далее, давайте переключимся из списка всех помещенные в очередь CSS файлы, чтобы удалить их с помощью этого скрипта
function remove_theme_head_styles() {
global $wp_styles;
foreach( $wp_styles->queue as $handle ) :
wp_dequeue_style( $handle );
wp_deregister_style( $handle );
endforeach;
}
add_action( 'wp_enqueue_scripts', 'remove_theme_head_styles', 9000 );
Давайте посмотрим, что у нас теперь есть:
Метод 2 (Монитор запросов): 13 стилей - все они загружены в нижний колонтитул. 10 из них поступают из родительской темы, а остальные 3 - из основного плагина темы MasterStudy LMS
Метод 1 (chrome): 14 запросов, как в QM, за исключением 1 дополнительного семейство шрифтов CSS
Метод 3 (php script echo): 0 результатов
Итак, возможно, нам нужно изменить крючок, go дальше вниз порядок перехватов, чтобы также включить таблицы стилей, помещенные в нижний колонтитул. Давайте попробуем wp_print_footer_scripts с большим числом для приоритета
add_action( 'wp_print_footer_scripts', 'remove_theme_head_styles', 9000 );
Результат: Метод 1 (chrome): 65 запросов, WTF? почти все они загружены!
Метод 2 (Монитор запросов): 0 Стили
Метод 3 (php скрипт): 0 результатов - тот же хук, что и для листинг, wp_print_footer_scripts
И ДА, веб-страница была отрисована соответствующим образом, поэтому Chrome Inspector не ошибается, но это не означает, что другие 2 метода дают ложные результаты. Это просто означает, что файлы CSS повторно ставятся в очередь после того, как сгенерированы результаты методов 2 и 3. Но как это происходит, я не могу понять.
Я также пробовал разбить процесс удаления на 2 крючка, 1 с wp_enqueue_scripts и еще один с другими хуками, такими как wp_footer и т.п., но безуспешно
10 стилей «проблем», исходящих из самой темы, загружаются с помощью этой функции
themes / masterstudy / inc / custom. php
function stm_module_styles($handle, $style = 'style_1', $deps = array(), $inline_styles = '')
{
$path = get_template_directory_uri() . '/assets/css/vc_modules/' . $handle . '/' . $style . '.css';
$handle = 'stm-' . $handle . '-' . $style;
wp_enqueue_style($handle, $path, $deps, STM_THEME_VERSION, 'all');
if (!empty($inline_styles)) wp_add_inline_style($handle, $inline_styles);
}
Вот пример использования функции выше
themes / masterstudy / vc_templates / stm_mailchimp. php
stm_module_styles('mailchimp', 'style_1', array(), $inline_styles);
Очевидно, что если я прокомментирую эту строку, то CSS не будет загружен, но это не тот подход, который я хочу использовать для решения проблемы.
Итак, если кто-то может предложить некоторую помощь, это будет буду очень признателен
Спасибо, что нашли время и прочитали это