除了联系人表格7页之外,如何禁用reCaptcha v3?

时间:2020-07-07 作者:Ujjawal Poonia

联系人表单7正在网站的所有页面上加载reCaptcha v3脚本,这使网站速度变慢
所以我使用了下面的脚本,它在两周前工作正常,但现在它停止了工作,正在加载更多的脚本。为什么会这样?

我不想使用额外的插件。

function contactform_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_script(\'google-recaptcha\');
        wp_dequeue_style( \'contact-form-7\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'contactform_dequeue_scripts\', 99 );

3 个回复
SO网友:Rick Hellewell

我将把出列语句放在“if”中,替换$loadscripts行。无需设置标志,然后检查标志以退出队列。这可能会简化进一步调试的代码。

已编辑:建议的代码更正:

function contactform_dequeue_scripts() {
    if (is_singular()) {
        $post = get_post();
        if (has_shortcode($post->post_content, \'contact-form-7\')) {
            wp_dequeue_script(\'contact-form-7\');
            wp_dequeue_script(\'google-recaptcha\');
            wp_dequeue_style(\'contact-form-7\');
        }
    }
}
add_action(\'wp_enqueue_scripts\', \'contactform_dequeue_scripts\', 99);
只有当CF7有一个短代码,并且是一个单独的页面时,才会将脚本出列。否则,事情就会正常进行。更容易阅读代码并了解发生了什么。

SO网友:Krzysztof

This works for me.

function contactform_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_script( \'google-recaptcha\' );
        wp_dequeue_script( \'wpcf7-recaptcha\' );     
        wp_dequeue_style( \'wpcf7-recaptcha\' );
        wp_dequeue_style( \'contact-form-7\' );
        
    }

}
add_action( \'wp_enqueue_scripts\', \'contactform_dequeue_scripts\', 99 );
SO网友:user6786748

A neater version:

function wpcf7_dequeue_redundant_scripts() {
    $post = get_post();
    if ( is_singular() && !has_shortcode( $post->post_content, \'contact-form-7\' ) ) {
        wp_dequeue_script( \'contact-form-7\' );
        wp_dequeue_style( \'contact-form-7\' );
        wp_dequeue_script( \'wpcf7-recaptcha\' );     
        wp_dequeue_style( \'wpcf7-recaptcha\' );
        wp_dequeue_script( \'google-recaptcha\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'wpcf7_dequeue_redundant_scripts\', 99 );