contact form-7

Проблемы с Contact Form 7 или почему стоит отключать лишние скрипты

Плагины

Приветствую друзья. В данной заметке речь пойдет об известном практически всем вордпрессерам плагине для создания контактных форм — Contact Form 7 и проблемами, связанными с его установкой на сайте. 

Работая над созданием сайта для заказчика я столкнулся с непонятной ситуацией. Делал я страницу FaQ, где Вопрос-Ответ был реализован с помощью аккордеонов и спойлеров. Т.е. изначально при заходе на страницу посетитель видит лишь список вопросов , а при клике по какому-либо разворачивается портянка с ответом на него. Думаю вы нередко встречали такой прием.

аккордеон js

Так вот, все работало чудесно, как вдруг в какой-то момент спойлеры просто перестали разворачиваться, хоть закликайся по ним. Тут же, первым делом заподозрил проблемы с работой скрипта jQuery, на котором собственно и работали аккордеоны. Стал думать почему такая беда случилась, и вспомнил, что незадолго до появления проблемы установил плагин Contact Form 7.

Зашел в админку, отключил плагин CForm 7, проверил аккордеоны — все работает, бинго! Пол дела сделано. Теперь нужно как-то установить причину и устранить проблему.

Причину так же быстро обнаружил — открыл код страницы и увидел что на сайте подключается несколько разных версий одного  js-скрипта jQuery, одну из которых и подрубал наш заботливый плагин контактных форм.

Мало кто обращает внимание, что CForm 7 при установке принудительно подключает в код вашего сайта свои скрипты и стили на всех страницах. При том что у абсолютного большинства вебмастеров контактная форма находится всего на 1-й странице, тем самым создается бесполезная дополнительная нагрузка на сайт.

Дальше дело техники — побежал на форумы и мануалы искать простое решение. Нашел, вот, делюсь с вами =)

Как отключить css-стили и js-скрипты Contact Form 7 на лишних страницах

Собственно ничего сложного нет. Достаточно скопировать приведенный ниже код в файл вашего шаблона fuctions.php и прописать нужные страницы, на которых скрипты и стили плагина все таки будут работать.

[php]function deregister_cf7_scripts() {
if ( !is_page(array(1,2,5)) ) {
wp_deregister_script(‘contact-form-7’);
}
}
add_action(‘wp_print_scripts’, ‘deregister_cf7_scripts’, 100);</code>

function deregister_cf7_styles() {
if ( !is_page(array(1,2,5)) ) {
wp_deregister_style(‘contact-form-7’);
}
}
add_action(‘wp_print_styles’, ‘deregister_cf7_styles’, 100);[/php]

Там где в коде array(1,2,5)  цифры в скобках нужно заменить на идентификаторы страниц, на которых у вас установлена форма обратной связи, перечисляем через запятую если больше одной, если страница одна, то без запятых, просто цифра.

Узнать ID страницы просто — достаточно зайти в админку вордпресса, нажать на редактирование нужной страницы и в адресной строке браузера найти хвост post=nnn, вот все цифры после post= это и есть ID страницы, копируем его и вставляем в код.

как узнать id страницы

 

Рекомендую вписать себе данной код каждому вебмастеру, у которого стоит плагин Contact Form 7, даже если нет никаких конфликтов в работе скриптов. Тем самым вы себя обезопасите на будущее и уменьшите нагрузку на хостинг, повысите скорость загрузки страниц.

Комментариев: 10

  • Привет
    Еще дополню, что такой фигней страдают и другие плагины.
    Например оптимайзпресс, который МНОГО чего вставляет в код других шаблонов на сайте.
    Дважды счетчики выводит)
    Короче, аккуратнее с ними нужно быть.

    • Привет Дим.

      Да, частенько сталкиваюсь с такими плагинами которые кучу шлака тихонько подключают к коду, в лучшем случае просто сайт грузится дольше будет… а могут и делов наделать

  • Привет! Код не совсем корректный. Он отключает регистрацию скрипта на заданных страницах, а надо бы наоборот делать сначала его совсем отключить, потом подключать там где требуется. Примерно так

    function deregister_cf7_scripts() {
    wp_deregister_script(‘contact-form-7’);
    if ( is_page(array(1,2,5)) ) {
    wp_register_script(‘contact-form-7’);
    }
    }
    add_action(‘wp_print_scripts’, ‘deregister_cf7_scripts’, 100);

    А стили у плагина можно отключить проще, для этого есть в плагине хук спецательный

    add_filter( ‘wpcf7_load_css’, ‘__return_false’ );

    Подобный есть и для js
    Правда хук странный, ну да ладно

    • Привет Артем. Фиг знает, у меня данный код работает как заявлено — на всех страницах отрубил скрипты и стили CF7, а на одной нужной оставил. Проверял на нескольких сайтах, включая этот блог.

      Но спорить не буду, ты в этом шаришь побольше меня однозначно, может твой вариант пригодится кому)

    • Привет. На самом деле да — это лучший плагин контактных форм для Вордпресс. Но он достаточно тяжелый, и если вам нужна простенькая форма на 1 странице, то можете ее сделать вообще без плагинов. В сети достаточно скриптов готовых контактных форм

  • Еще я заметил, что Contact Form вставляет в код страницы сайта свои стили (я добавлял разные формы на сайте в разным местах, причем со своими правками), было бы хорошо, если бы он эти стили прописал в отдельном файле, не перегружая страницу. Из-за этих стилей у меня текст начинается в коде только с 1000й строки… Хотелось бы чтобы роботы шаря по моему сайту меньше читали ненужных символов.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.