Ограничение плагина только на загрузку его CSS и JS на выбранных страницах?
Я хотел бы заставить плагин ограничить загрузку таблиц стилей CSS и файлов JavaScript JS только теми страницами, для которых они необходимы.
Примером моего вопроса является плагин Контактная форма 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>
Это заставляет меня подозревать, что этот плагин ухудшает загрузку моего сайта время, для расширения, которое интересует меня только на одной странице сайта.
Таким образом, мой вопрос заключается в том, как я могу удалить эти дополнительные строки со всех страниц, кроме страницы "Свяжитесь со мной", но без деактивации плагина?
1 answers
Стили и сценарии всегда настраиваются функциями 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
, когда вы окажетесь на странице контактов (при условии, что имя "свяжитесь со мной")... вы также можете использовать идентификатор страницы и идентификатор страницы для фильтра. На всех других страницах условие if()
добавит функцию удаления сценария/стиля к действию wp_head
, которое запускается непосредственно перед действиями wp_print_scripts
и wp_print_styles
.
Это должно удалить дополнительный код с ваших страниц, и вы вам не придется деактивировать подключаемый модуль или редактировать какие-либо основные файлы. Функции и код, которые я перечислил выше, также не приведут к нарушению работы вашей темы, если вы удалите контактную форму 7 в будущем... так что не нужно беспокоиться о совместимости будущих обновлений.