webentwicklung-frage-antwort-db.com.de

Beste Möglichkeit, Skripte in eine bestimmte Vorlagenseite aufzunehmen

Das hat mich immer verwirrt und ich könnte Hilfe gebrauchen.

Ich möchte vier Dinge direkt über dem schließenden Body-Tag tun:

  1. include jQuery (WordPress-Version ist in Ordnung)
  2. darunter ein von jQuery abhängiges jQuery-Plugin einbinden
  3. initialisieren Sie das Plugin direkt unter diesem Plugin UND vermeiden Sie Konfliktprobleme, indem Sie $ anstelle von jQuery verwenden
  4. tun Sie dies nur für bestimmte Seitenvorlagen oder Themendateien

Ich verstehe, dass ich wahrscheinlich wp_enqueue_script verwenden sollte, aber ich bin nicht sicher, ob ich das in functions.php oder direkt auf der Seite verwenden soll, auf der ich es haben möchte.

In Bezug auf Nummer 3 habe ich folgende Problemumgehungen gesehen:

jQuery(function ($) {
/* You can safely use $ in this code block to reference jQuery */
});

Aber ich bin ehrlich gesagt verwirrt, wie ich das umsetzen soll.

Was ist der beste Weg, um dies zu erreichen?

Vielen Dank.

1
jw60660

Der folgende Code (im functions.php Ihres Themas) registriert Ihr Skript und legt jQuery als Abhängigkeit fest. Wenn Sie es in die Warteschlange stellen, wird auch jQuery in die Warteschlange gestellt.

function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('my_custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0' );

}
add_action('wp_enqueue_scripts', 'my_scripts_method');

Anschließend können Sie Ihr Skript auf zwei Arten in die Warteschlange stellen. Im functions.php Ihres Themas können Sie den template_include-Filter verwenden, um die verwendete Vorlage mit is_page_template() abzurufen.

add_filter( 'template_include', 'my_load_script_for_template', 1000 );
function my_load_script_for_template( $template ){
     if(is_page_template('my-template.php'))
        wp_enqueue_script('my_custom_script');

return $template;
}

Alternativ können Sie, wenn Sie 3.3+ und Ihr Thema verwenden, wp_footer() einfach wp_enqueue_script('my_custom_script') innerhalb der eigentlichen Vorlagenseite aufrufen.

5
Stephen Harris

Ich bin mir nicht sicher, ob dies immer noch der "beste Weg" ist (oder war), da ich keine Zeit hatte, die neuesten Entwicklungsupdates zu durchsuchen, aber ich werde zunächst veröffentlichen, wie ich es mache:

function my_slider_script() {
  if ( !is_page_template( 'slider.php' ) )
  return;
    wp_enqueue_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui-tabs');
    wp_enqueue_script( 'my_rotator_script', get_template_directory_uri() . '/js/photo_rotator_tabs.js', array('jquery'));
  }
add_action( 'template_redirect', 'my_slider_script' )

Die ersten beiden verwenden die in WordPress enthaltenen js, und der 'my_rotator_script' ist einer, den ich in meinem Vorlagenordner in einem js-Ordner im Themenstamm mit dem Namen photo_rotator_tabs.js eingefügt habe. Es ist nur auf den Seiten enthalten, die die Seitenvorlage slider.php verwenden.

Ich denke, Scribu hat einen sehr detaillierten Beitrag zu diesem Thema geschrieben, aber ich erinnere mich nicht an den Link. Ich denke er benutzt die wp_print_scripts Methode oder die "WordPress Ninja" Methode. Vielleicht hilft er dir, wenn meine obsolet ist.

1
Jeremy Jared