Оптимизируем Contact Form 7 — удаление скриптов и стилей

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

Объясню вкратце, о чём сама заметка: при каждой загрузке плагина WP тянет множество файлов — скрипты JavaScript, таблицы CSS и много другой левой информации, которая не нужна на каждой странице сайта.

Пример: плагин Contact Form 7, который служит для создания формы обратной связи. Самый простой вопрос — сколько у вас страниц с формами обратной связи на сайте? Ну максимум 2-3, я думаю больше вы не используете. А вот обычных блоговых страниц может быть за тысячу.

А теперь представьте, что при каждой загрузке страницы, на которой нет формы обратной связи Contact Form 7, WordPress вынужден подгружать лишние файлы — скрипты и стили оформления для формы. Которых (внимание!) — нет! Проблемы, в общем-то, нет, если вы используете какие-то плагины для кеширования, либо у вас грамотно настроенный веб-сервер. Но не всем везёт, к сожалению.

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

Оптимизируем Contact Form 7 - удаление скриптов и стилей

Определяем страницы с формами обратной связи

Первым делом нам нужно найти номера (ID) наших форм.

  • Заходим в меню «Contact Form 7» в Консоли WP и переходим в «Формы».
  • Наша с вами задача найти ID наших форм. Вот они:
    Оптимизируем Contact Form 7 - удаление скриптов и стилей

Теперь надо выяснить, на каких страницах или записях имеются эти формы.

  • Берём в примере первый ID 1689 из предыдущего скриншота, идём в раздел «Страницы» — «Все страницы», в поле фильтра вводим наш числовой код формы: «1689» и нажимаем кнопку «Поиск страниц»:
    Оптимизируем Contact Form 7 - удаление скриптов и стилей
  • Если на какой-то странице встречается это слово, то она будет выведена в списке страниц:
    Оптимизируем Contact Form 7 - удаление скриптов и стилей

Теперь нам останется найти slug этой страница и записать его куда-нибудь.

  • В списке найденных страниц наводим на название страницы и выбираем в появившихся ссылках пункт «Свойства». Отобразится вот такая настройка:
    Оптимизируем Contact Form 7 - удаление скриптов и стилей
  • Копируем то, что указано в поле «Ярлык» и записываем в текстовый редактор.

Вот по такому способу вам нужно найти все страницы или записи, на которых используются формы обратной связи. Записи можно найти аналогичным способом, только в разделе «Записи» — «Все записи». После этой работы у вас будет список ярлыков.

Отключаем форму обратной связи

Следующим этапом будет отмена подгрузки скриптов и стилей форм обратной связи на тех страницах, которые эти самые формы не используют. Вперёд!

Это раздел подразумевает что вы умеете пользоваться FTP и знаете как подключиться к вашему хостингу. Если нет — воспользуйтесь инструкцией по работе с FileZilla.
  • Подключаемся к FTP вашего хостинга или сервера.
  • Заходим по адресу wp-content/themes/название_вашей_темы/.
  • Открываем на редактирование файл functions.php.
  • И в самый его конец добавляем следующий код:
    // Отключаем лишние стили из Contact Form 7 на страницах без форм
    $allowed_cf7_pages_or_posts = array();
    $allowed_cf7_pages_or_posts[] = 'zadat-vopros';
    $allowed_cf7_pages_or_posts[] = 'besplatnyi-audit-sayta-na-wordpress';
    $allowed_cf7_pages_or_posts[] = 'zayavka-na-obuchenie-wordpress';
    
    add_action( 'wp_print_styles', 'cf7_deregister_styles', 100 );
    function cf7_deregister_styles() {
        global $allowed_cf7_pages_or_posts;
        if ( ! is_page( $allowed_cf7_pages_or_posts ) && ! is_single( $allowed_cf7_pages_or_posts ) ) { 
            wp_deregister_style( 'contact-form-7' );
        }   
    }
    
    add_action( 'wp_print_scripts', 'cf7_deregister_scripts', 100 );
    function cf7_deregister_scripts() {
        global $allowed_cf7_pages_or_posts;
        if ( ! is_page( $allowed_cf7_pages_or_posts ) && ! is_single( $allowed_cf7_pages_or_posts ) ) { 
            wp_deregister_script( 'contact-form-7' );
        }   
    }
  • Сохраняем файл обратно на FTP и радуемся!

Теперь немного пояснений по коду, чтобы вы понимали о чём идёт речь.

Видите строчки начинающиеся на $allowed_cf7_pages_or_posts[]? Вот в этих строках как раз и указываются те ярлыки страниц и записей, на которых наша форма будет отображаться. Во всех остальных же скрипты и оформление Contact Form 7 будут отключены.

Теперь разберём пример

Допустим, что ярлыки ваших страниц и записей следующие: contacts, my-story, obo-mne.

Вам необходимо будет после вот этой строки в коде выше:

$allowed_cf7_pages_or_posts = array();

Вставить следующие строки:

$allowed_cf7_pages_or_posts[] = 'contacts';
$allowed_cf7_pages_or_posts[] = 'my-story';
$allowed_cf7_pages_or_posts[] = 'obo-mne';

Остальной код изменять не нужно! Загружаем на FTP и пользуемся.

Заключение

Вот таким нехитрым способом можно немного оптимизировать работу вашего сайта и не загружать неиспользуемые скрипты или оформление для лишних элементов. Уверен, что для других плагинов всё делается абсолютно аналогичным образом. Возможно со временем я к этому вернусь :-)

Информация для тех, кто не использует slug в структуре URL

Вам вместо названий страниц необходимо будет вписать ID этих страниц или записей в тот же массив $allowed_cf7_pages_or_posts[] из примера выше. Ничего ровным счётом не меняется.

Если есть вопросы — задавайте их в комментариях к этой записи.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Комментарии

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: