Wenden Sie jquery-Skript nur auf Woocommerce-Produktseiten und -kategorien an

Ich habe dieses Skript, das beim Laden der Seite automatisch zum primären Inhalt scrollt.

jQuery(document).ready(function($){ if ( $(window).width() < 768 || window.Touch) { $('html, body').animate({ scrollTop: $("#primary").offset().top}, 2000);} }); 

1. Ich möchte es jedoch nur auf unsere Woocommerce-Produktseiten und -Kategorien anwenden, damit es nicht auf Home / Blog-Seiten funktioniert. Wie würde ich das tun?

Ich kann das schlecht machen, indem ich WooCommerce-coredateien bearbeite, aber ich weiß, dass das eine schreckliche Idee ist, also suche ich Hilfe, wie ich es richtig machen kann über meine functions.php-Datei.

2. Ich würde auch gerne wissen, wie man es auf alle Seiten mit Ausnahme der Homepage anwenden kann, sollte das später eine bessere Option sein.

Danke vielmals!

Solutions Collecting From Web of "Wenden Sie jquery-Skript nur auf Woocommerce-Produktseiten und -kategorien an"

Es gibt zwei Möglichkeiten, wie Sie das tun können.

1. Nur mit JS

WordPress-Themes verwenden normalerweise die function body_class() . Als Ergebnis sehen Sie, dass das -Tag viele classn enthält. Sie können dann Seiten mit einer bestimmten class als Ziel festlegen, um Ihren Code in JavaScript auszuführen:

 if( $('body.whateverclass').length || $('body.anotherclass').length ){ // Your JS code here } 

2. Mit PHP

Sie können wp_localize_script() , um ein Flag an Ihren Code zu senden.

Nehmen wir an, Sie haben eine Datei namens site.js mit dem Handle-Namen der site in eine site.js In Ihrer functions.php Sie:

 wp_register_script( 'site', 'path/to/site.js' ); wp_enqueue_script( 'some_handle' ); 

Sie können jetzt einige Flags hinzufügen:

  wp_register_script( 'site', 'path/to/site.js' ); # Unchanged $value = ''; if ( is_shop() || is_some_other_condition() ){ $value = 'yes'; } wp_localize_script( 'site', 'MYSITE', $value ); wp_enqueue_script( 'some_handle' ); # Unchanged 

Sie können dann die MYSITE Variable in JavaScript überprüfen:

 if( 'yes' === MYSITE ){ // Your JS code here } 

Edit: Du hast gefragt, wie man es in die footer.php legt:

  

Schritt 1: Speichern Sie den Code als neue js-Datei, sagen Sie main.js

Schritt 2: Fügen Sie function.php Ihres Themas eine bedingte function hinzu, die etwas um die Zeilen herum aussagt:

 if (is_shop() || is_product_category()) { wp_enqueue_script('main', get_template_directory_uri() . '/js/main.js', false, false, true); } 

Überprüfen Sie diese Seite auf bedingte Tags basierend auf Ihren Bedürfnissen:

https://docs.woocommerce.com/document/conditional-tags/

Ich hoffe es hilft!

Bearbeiten:

Für Inline-Scripting könnten Sie tun (zB in footer.php):

 if (is_shop() || is_product_category()) {  }