ruSKweb.ru

"Самая хорошая работа – это высокооплачиваемое хобби"

Генри Форд

Проблемы с 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 и прописать нужные страницы, на которых скрипты и стили плагина все таки будут работать.

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);

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

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

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

 

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

Понравилась статья? Жми лайк:

7 комментариев

  1. дмитрий пишет:

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

    [Ответить]

    Сергей Кобзарь отвечает:

    Привет Дим.

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

    [Ответить]

  2. Андрей пишет:

    Без лишнего-ненужного сайт всегда работает лучше :)

    [Ответить]

    Сергей Кобзарь отвечает:

    Это точно. В этом плане сайты на Вордпрессе целая свалка лишнего ненужного и каждый новый плагин добавляет свою порцию)

    [Ответить]

  3. Артем пишет:

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

    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, а на одной нужной оставил. Проверял на нескольких сайтах, включая этот блог.

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

    [Ответить]

    Артем отвечает:

    Ну я то не истина в последней инстанции, все надо тестировать. есл твой вариант работает, то и хорошо

    [Ответить]

Оставить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: