Удалить контактную форму 7 CSS и JS Если на странице не используется контактная форма 7, короткий код

Я хочу показать CSS и Javascript только тогда, когда шорткод используется на этой странице. Если краткий код отсутствует на странице WordPress, то контактная форма js и css не должна отображаться. Для этого я вставил следующий код в мой файл functions.php активных тем.

add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );

Приведенный выше код полностью удаляет плагин js и css контактной формы 7. Что мне нужно, если вставить контактную форму 7 шорткод, то должны быть показаны оба.

3 ответа

Решение

Вот ответ на ваш вопрос. Если шорткод отсутствует, контактная форма css и js будет удалена, а если есть шорткод css и js, будет добавлен.

function rjs_lwp_contactform_css_js() {
    global $post;
    if( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'contact-form-7') ) {
        wp_enqueue_script('contact-form-7');
         wp_enqueue_style('contact-form-7');

    }else{
        wp_dequeue_script( 'contact-form-7' );
        wp_dequeue_style( 'contact-form-7' );
    }
}
add_action( 'wp_enqueue_scripts', 'rjs_lwp_contactform_css_js');

Мне нужна была другая версия, которая соответствует виджетам и шорткодам в файле темы.

      add_filter( 'wpcf7_load_css', '__return_false' );

add_filter( 'wpcf7_load_js', '__return_false' );

remove_action( 'wp_enqueue_scripts','wpcf7_recaptcha_enqueue_scripts', 20 );

add_filter('pre_do_shortcode_tag', 'enqueue_wpcf7_css_js_as_needed', 10, 2 );
function enqueue_wpcf7_css_js_as_needed ( $output, $shortcode ) {
    if ( 'contact-form-7' == $shortcode ) {
        wpcf7_recaptcha_enqueue_scripts();
        wpcf7_enqueue_scripts();
        wpcf7_enqueue_styles();
    }
    return $output;
}

Вы используете ниже код. Вы можете добавить свой идентификатор страницы в этом коде.

function dvk_dequeue_scripts() {

    $load_scripts = false;

    if( is_singular() ) {
        $post = get_post();

        if( has_shortcode($post->post_content, 'contact-form-7') ) {
            $load_scripts = true;
        }

    }

    if( ! $load_scripts ) {
        wp_dequeue_script( 'contact-form-7' );
        wp_dequeue_style( 'contact-form-7' );
    }

}

add_action( 'wp_enqueue_scripts', 'dvk_dequeue_scripts', 99 );

Ссылка

Другие вопросы по тегам