web-dev-qa-db-fra.com

Comment résoudre un conflit entre un plugin et un thème?

J'utilise Photospace comme un curseur de galerie dans mon thème hatch pro wp ( vous pouvez vérifier ici ).

L'effet de transition par défaut entre les diapositives est un effet de croisement ( comme dans cet exemple ), mais l'effet dans mon curseur semble être un fondu d'image en blanc, puis un fondu blanc en image. Je ne sais pas pourquoi cela se produit.

Voici le code qui appelle d'autres scripts:

    /* Enqueue scripts (and related stylesheets) */

add_action( 'wp_enqueue_scripts', 'hatch_pro_scripts' );
function hatch_pro_scripts() {

if ( !is_admin() ) {

    /* Enqueue Scripts */
    wp_enqueue_script( 'hatch_pro_fitvids', get_template_directory_uri() . '/js/fitvids/jquery.fitvids.js', array( 'jquery' ), '1.0', true );


    /* Enqueue Fancybox */
    if ( hybrid_get_setting( 'hatch_pro_fancybox_enable' ) ) {
        wp_enqueue_script( 'hatch_pro_fancybox', get_template_directory_uri() . '/js/fancybox/jquery.fancybox-1.3.4.pack.js', array( 'jquery' ), '1.0', true );     
        wp_enqueue_style( 'hatch_pro_fancybox-stylesheet', get_template_directory_uri() . '/js/fancybox/jquery.fancybox-1.3.4.css', false, 1.0, 'screen' );
        wp_enqueue_script( 'hatch_pro_footer-scripts', get_template_directory_uri() . '/js/footer-scripts.js', array( 'jquery', 'hatch_pro_fitvids', 'hatch_pro_fancybox' ), '1.0', true ); 
    } else {
        wp_enqueue_script( 'hatch_pro_footer-scripts-light', get_template_directory_uri() . '/js/footer-scripts-light.js', array( 'jquery', 'hatch_pro_fitvids' ), '1.0', true );   
    }
}

}

Comment puis-je résoudre ça?

Je suis à l'aise avec les CSS, mais pas tellement avec PHP ou d'autres codes plus lourds.

3
Dave

Si le thème a été codé à l'aide de Normes de développement de thèmes , vous pouvez utiliser la fonction wp_deregister_script pour supprimer les scripts en conflit de la page où le curseur est utilisé.


[update]
La solution originale (en bas) fonctionnait dans une situation de plug-in spécifique (avec WP Touch).
Je pense que c'est la bonne:

add_action( 'wp_enqueue_scripts', 'wpse_77772_remove_theme_enqueues', 11 );

function wpse_77772_remove_theme_enqueues()
{
    if( is_front_page() || is_home() ) 
    {
        wp_dequeue_script('hatch_pro_fancybox');
        // etc
    }
}

[première version]

Par exemple, dans l'extrait suivant, je supprime tous les scripts et le style du plug-in Alo Easy Mail _ si le site est en cours de visualisation sur un appareil mobile, vérifiez les commentaires de votre cas d'utilisation.

Placez-le à la fin du fichier functions.php du thème (ou du thème enfant).

add_action( 'wp_head', 'wpse_77772_remove_plugin_scripts', 1 );

/**
 * You'd probably want to use
 * if( is_front_page() || is_home() ) 
 *
 * see: http://wordpress.stackexchange.com/q/30385/12615
 */
function wpse_77772_remove_plugin_scripts()
{
    if( wp_is_mobile() ) {
        remove_action('wp_head', 'add_css');
        wp_deregister_script('jqplot');
        wp_deregister_script('bar');
        wp_deregister_script('cax');
        wp_deregister_script('pol');
        wp_deregister_script('fun');
        wp_deregister_script('pie');
        wp_deregister_script('meg');
    }
}

De cette façon, vous pouvez supprimer les scripts en conflit d’une page spécifique , et les laisser se charger dans le reste.

Cherchez dans votre thème wp_register_script et saisissez la poignée à utiliser avec le désenregistrement.

Le remove_action fonctionne sur tous les add_action du thème.

4
brasofilo