it-swarm.com.de

JQuery von WooCommerce über 'functions.php' aushängen?

Ich verwende also das http://woothemes.com/woocommerce/ Plugin für eCommerce und es registriert jQuery local und widerspricht meinem standardmäßigen jQuery-Aufruf von Google CDN.

Es hat lange gedauert, aber ich habe das Problem auf die folgenden Codezeilen innerhalb von woocommerce.php beschränkt:

    $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
    $lightbox_en = (get_option('woocommerce_enable_lightbox')=='yes') ? true : false;
    $chosen_en = (get_option('woocommerce_enable_chosen')=='yes') ? true : false;
    $jquery_ui_en = (get_option('woocommerce_enable_jquery_ui')=='yes') ? true : false;
    $scripts_position = (get_option('woocommerce_scripts_position') == 'yes') ? true : false;

    // Woocommerce.min.js is minified and contains woocommerce_plugins
    wp_enqueue_script( 'woocommerce', $this->plugin_url() . '/assets/js/woocommerce'.$suffix.'.js', array('jquery'), '1.0', $scripts_position );
    if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
        wp_enqueue_script( 'woocommerce_plugins', $this->plugin_url() . '/assets/js/woocommerce_plugins'.$suffix.'.js', array('jquery'), '1.0', $scripts_position );
    }

Wenn Sie sie löschen, wird der doppelte jQuery-Aufruf abgebrochen, der mir alle Kopfschmerzen bereitet. Ich habe in functions.php Folgendes, um jQuery aus dem Header zu entfernen, aber aus irgendeinem Grund bleibt es bestehen und weigert sich, wegzugehen! :/Irgendwelche Ideen, wie man den lokalen jQuery-Aufruf innerhalb von functions.php beendet? Stimmt etwas mit meinem Code nicht? :

// dequeue jquery from header

function theme_slug_dequeue_header_jquery() {
     wp_dequeue_script( 'jquery' );
}
add_action( 'wp_header', 'theme_slug_dequeue_header_jquery', 11 );
1
Brian

Tatsächlich sieht es so aus, als ob Ihre anrufende Abfrage falsch ist. Sie sollten always wp_enqueue_script verwenden, andernfalls fragen Sie nach Konflikten. Rufen Sie es nicht manuell auf.

Die Zeilen, die Sie in WooCommerce eingefügt haben, laden jquery nicht direkt - sie laden es, indem Sie die Abhängigkeiten für die anderen Skripte festlegen. WordPress erledigt den Rest.

Wenn Sie jQuery von einem CDN verwenden möchten, müssen Sie die Registrierung aufheben und es erneut bei der CDN-Version registrieren. Anstatt den Code einzufügen, leite ich Sie zu folgendem Beispiel weiter, in dem erklärt wird, wie:

http://www.wpbeginner.com/wp-themes/replace-default-wordpress-jquery-script-with-google-library/

2
Mike Jolley

Ich hatte ein ähnliches Problem und stolpere in diesen Thread.

Mein Problem war, dass WooCommerce 2.0.5 jQuery selbst registrierte und meine eigenen jQuery-Skripte beschädigte, was zu einem Konflikt mit meinem functions.php-Prozess deregister/register/enqueue führte.

Nach mehreren Versuchen habe ich festgestellt, dass ich die jQuery-Version nicht in meine Funktion aufgenommen habe. Nach dem gezielten Hinzufügen wurde das Problem behoben.

Das macht woocommerce/woocommerce.php (Zeile 1214):

public function check_jquery() {
    global $wp_scripts;

    // Enforce minimum version of jQuery
    if ( isset( $wp_scripts->registered['jquery']->ver ) && $wp_scripts->registered['jquery']->ver < '1.7' ) {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), '1.7' );
        wp_enqueue_script( 'jquery' );
    }
}

Und so überschreibe ich es in meiner functions.php Datei

function my_scripts_method() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 
        'jquery', 
        'http://code.jquery.com/jquery.js',
        false, 
        '1.9.1' // IMPORTANT: declare jQuery version
        );
    wp_enqueue_script( 'jquery' );
}  

add_action('wp_enqueue_scripts', 'my_scripts_method');

Hoffe das könnte jemand anderem helfen :)

2
ChowKaiDeng