talgalili
  • 0
Эксперт

Ограничение подключаемого модуля загрузкой CSS и JS только на выбранных страницах?

  • 0

Я хотел бы, чтобы плагин ограничивал загрузку таблиц стилей CSS и JS-файлов JavaScript только теми страницами, для которых они необходимы.

Примером моего вопроса является плагин Contact Form 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> 

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

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

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

    • 0

Оставить ответ

You must login to add an answer.