По умолчанию Contact Form 7 загружает свои js-скрипты и css-стили на все страницы. Вы можете решить, что это ненужная трата ресурсов и негативно скажется на скорости загрузки и будете совершенно правы.
К сожалению, у плагина есть техническая трудность в том, чтобы узнать, содержит ли страница контактную форму или нет до ее загрузки и сегодня мы рассмотрим два простых шага как это обойти.
Отменяем подключение стилей
Для начала мы отменим загрузку файлов cf7 на всех страницах с помощью этого кода.
function cf7_load() {
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );
}
add_action( 'init', 'cf7_load' );
Подключаем на нужных страницах
Теперь вам нужно вернуть подключение только на необходимых вам страницах. Сделать это можно, например, с помощью условных тегой is_page()
, is_front_page()
, is_single()
и т.д.
function cf7_enqueue_scripts() {
if ( is_page( array( 'contact', 'contact-us', 'call', 'dealer' ) ) ) {
if ( function_exists( 'wpcf7_enqueue_scripts' ) ) {
wpcf7_enqueue_scripts();
}
if ( function_exists( 'wpcf7_enqueue_styles' ) ) {
wpcf7_enqueue_styles();
}
}
}
add_action( 'wp_enqueue_scripts', 'cf7_enqueue_scripts', 100 );
Весь этот код нужно вставить в файл functions.php, но гораздо правильнее создать новый файл и подключить его с помощью require_once
, напрмиер так:
if ( is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) ) {
require_once get_stylesheet_directory() . '/includes/plugin-addons/contact-form-7.php';
}