it-swarm.com.de

Bedingtes wp_enqueue_script auf einer Seite

Aus Gründen der Effizienz versuchen wir, einige JS-Skripte nur mit einer bestimmten Seitenvorlage eines Themas zu verknüpfen, das ein Formular enthalten soll: page-with-form.php

In der theme functions.php haben wir eine init_method als solche definiert:

function my_init_method(){

    $dir = get_bloginfo('stylesheet_directory')."/js/jquery.js";
    wp_deregister_script('jquery');
        wp_register_script('jquery',$dir);
    wp_enqueue_script('jquery');

    $dir = get_bloginfo('stylesheet_directory')."/js/jquery.validate.min.js";
    wp_deregister_script('jquery.validate.min');
        wp_register_script('jquery.validate',$dir);
    wp_enqueue_script('jquery.validate.min');

    $dir = get_bloginfo('stylesheet_directory')."/js/funcion.js";
    wp_deregister_script('funcion');
        wp_register_script('funcion',$dir);
    wp_enqueue_script('funcion');
}    

Wir haben dann erwartet, dass wir nur in der ersten Zeile der page-with-form.php-Seitenvorlage hinzufügen können (vor get_header ()):

add_action('init', 'my_init_method');
  • Geht das nicht
  • Müssen wir der functions.php-Funktion eine if-Regel hinzufügen, um festzustellen, dass wir uns auf dieser Seite befinden?

Codeänderungen basierend auf Antworten: Auf der Seitenvorlage laden Sie die Funktion direkt, keine Notwendigkeit add_action ("init" ...

my_init_method();
...
get_header();
7
luison

init ist viel früher als das Laden von Seitenvorlagen und nicht geeignet für Warteschlangen (trotz vieler Tutorials und Dokumente, die es dafür verwenden).

Verknüpfen Sie Ihre Funktion mit wp_enqueue_scripts und vergewissern Sie sich, dass Sie dies tun, bevor Sie die Vorlage wp_head() aufrufen.

7
Rarst

Als Sie Ihre Vorlagendatei geladen haben, haben Sie bereits den Hook 'template_redirect' übergeben, der zu spät ist (siehe: Plugin/Action API-Referenz ).

Sie müssen den add_action-Aufruf in Ihrer functions.php-Datei festlegen, die vor dem after_setup_theme-Hook geladen wird - dem ersten verfügbaren Hook für Themes.

3
kaiser

Zusätzlich zur Verwendung des richtigen Hooks (wie von @Rarst angegeben) müssen Sie Ihren Funktionscode in functions.php verschieben und den Funktionsinhalt in eine if ( is_page( 'page-with-form' ) )-Bedingung einschließen.

3
Chip Bennett