Quiero mostrar css y javascript solo cuando se utiliza el shortcode en esa página. Si el código corto no está presente en la página de WordPress, entonces no se deben mostrar los js y css del formulario de contacto. Para eso lo que he hecho es pegar el siguiente código en mi archivo de funciones activas .php de temas.

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

El código anterior elimina totalmente el js y css del complemento de formulario de contacto 7. Lo que necesito es que si se pega el shortcode del formulario de contacto 7, se deben mostrar ambos.

3
James Paul 22 feb. 2018 a las 12:16

2 respuestas

La mejor respuesta

Aquí está la respuesta a su pregunta. Si no hay un shortcode, se eliminarán css y js del formulario de contacto y si hay shortcode se agregarán css y 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');
3
J. Shabu 22 feb. 2018 a las 12:00

Usas el siguiente código. Puedes agregar tu ID de páginas en este código.

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

Referencia

1
developerme 22 feb. 2018 a las 11:22