Я бы хотел, чтобы плагин ограничивал загрузку таблиц стилей CSS и JS-файлов JavaScript только теми страницами, для которых они нужны.
Примером моего вопроса является плагин Контактная форма 7 , который я использовал для создания формы на одной странице моего сайта (страница " свяжитесь со мной "). Однако он добавляет следующие строки на КАЖДУЮ страницу/пост на сайте:
<link rel='stylesheet' id='contact-form-7-css' href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' />
<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script>
Это заставляет меня подозревать, что этот плагин ухудшает время загрузки моего сайта, поскольку расширение интересует меня только на одной странице сайта.
Таким образом, мой вопрос заключается в том, как я могу удалить эти дополнительные строки со всех страниц, кроме страницы "Свяжитесь со мной", но без деактивации плагина?
Стили и сценарии всегда устанавливаются функциями wp_enqueue_script()
и wp_enqueue_style()
, которые должны быть привязаны к определенному хуку действий, чтобы функционировать. Я заглянул в Контактную форму 7, и похоже, что он использует теги действий wpcf7_enqueue_scripts
и wpcf7_enqueue_styles
, чтобы добавить их в хуки wp_print_scripts
и wp_print_styles
.
Итак, вам нужно отсоединить скрипты и стили от каждой страницы но вашей страницы контактов. Действие wp_head
запускается перед действиями сценария и стиля, поэтому вам нужно добавить что-то вроде этого в файл functions.php вашей темы:
function remove_wpcf7_extras() {
remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}
if( ! is_page('contact me') ) {
add_action('wp_head', 'remove_wpcf7_extras');
}
Функция is_page () вернет true
, когда вы находитесь на странице контактов (при условии, что имя "contact me") ... вы также можете использовать слаг и идентификатор страницы для фильтра. На всех других страницах условное выражение if()
добавит функцию удаления сценария/стиля к действию wp_head
, которое запускается непосредственно перед действиями wp_print_scripts
и wp_print_styles
.
Это должно удалить лишний код с ваших страниц, и вам не нужно будет деактивировать плагин или редактировать какие-либо основные файлы. Функции и код, которые я перечислил выше, также не повредят вашу тему, если вы удалите контактную форму 7 в будущем, так что ... не нужно беспокоиться о совместимости обновления в будущем.