wake-up-neo.com

Wie löse ich einen Konflikt zwischen einem Plugin und einem Theme?

Ich verwende Photospace als Galerie-Schieberegler in meinem Pro-WP-Design ( Sie können dies hier überprüfen ).

Der Standardübergangseffekt zwischen Folien ist ein Überkreuzungseffekt ( wie in diesem Beispiel ), aber der Effekt in meinem Schieberegler scheint zu sein, dass das Bild zu Weiß und das Weiß zu Bild verblasst. Ich bin nicht sicher, warum das passiert.

Hier ist der Code, der andere Skripte aufruft:

    /* 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 );   
    }
}

}

Wie kann ich das beheben?

Ich bin mit CSS vertraut, aber nicht so sehr mit PHP oder anderen schwereren Codierungen.

3
Dave

Wenn das Thema mit Theme Development Standards codiert wurde, können Sie mit der Funktion wp_deregister_script widersprüchliche Skripte von der Seite entfernen, auf der der Schieberegler verwendet wird.


[update]
Die ursprüngliche Lösung (unten) funktionierte in einer bestimmten Pluginsituation (mit WP Touch).
Ich denke, das ist das Richtige:

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
    }
}

[erste Version]

Im folgenden Snippet entferne ich beispielsweise alle Skripte und Stile des Plugins Alo Easy Mail. Wenn die Site auf einem Mobilgerät angezeigt wird, überprüfen Sie die Kommentare für Ihren Anwendungsfall.

Fügen Sie es am Ende der functions.php-Datei des Themas (oder des untergeordneten Themas) ein.

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

Auf diese Weise können Sie die in Konflikt stehenden Skripte von einer bestimmten Seite entfernen und im Rest laden lassen.

Durchsuchen Sie Ihr Thema nach wp_register_script und greifen Sie nach dem Handle, um die Registrierung aufzuheben.

Der remove_action funktioniert mit allen add_action, die das Thema hat.

4
brasofilo