it-swarm-ru.tech

CSS и JS на выбранных страницах?

Я бы хотел, чтобы плагин ограничивал загрузку таблиц стилей 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> 

Это заставляет меня подозревать, что этот плагин ухудшает время загрузки моего сайта, поскольку расширение интересует меня только на одной странице сайта.

Таким образом, мой вопрос заключается в том, как я могу удалить эти дополнительные строки со всех страниц, кроме страницы "Свяжитесь со мной", но без деактивации плагина?

9
Tal Galili

Стили и сценарии всегда устанавливаются функциями 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 в будущем, так что ... не нужно беспокоиться о совместимости обновления в будущем.

9
EAMann