webentwicklung-frage-antwort-db.com.de

wp_enqueue_script vs. wp_register_script

Ich versuche hier das Richtige zu tun und binde mich in einen Knoten! Also habe ich in meiner header.php vor wp_admin:

wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable'), '1.0', true);

welches funktioniert. Grundsätzlich habe ich eine benutzerdefinierte js-Datei, die jquery und jqueryui als Abhängigkeiten benötigt. Ich habe seitdem "jquery" rausgenommen, da es scheinbar zweimal geladen wird, unabhängig davon. Ich hatte auch eine Funktion in 'init' in functions.php, aber das schien keinen Vorteil zu haben?

Ich möchte das Validierungsskript von CDN einschließen, da dies auch eine Abhängigkeit von meinem benutzerdefinierten Skript darstellt. Ich dachte, ich würde das Skript so registrieren:

wp_register_script('validate', 'http://ajax.Microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js', true);

und dann 'validate' zum Dependencies-Array in der Enqueue hinzufügen, wie folgt:

wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable', 'validate'), '1.0', true);

in dieser reihenfolge ist jquery auch eine abhängigkeit von validate. Puh! Das funktioniert nicht, ich habe offensichtlich ein Missverständnis - bitte helfen Sie mir, das zu lösen, was ich hier tun möchte ...

2
Richard Lane

Ich denke, Sie sollten das Skript auch einfach in die Warteschlange stellen (für Ihr Validierungsskript). Ich würde es auch um eine ganze Funktion wickeln, um das Problem # 11526 zu vermeiden: Aufrufen

Also alles zusammen:

<head>
...
<?php 

function mytheme_enqueue_script() {
// Load jQuery
wp_enqueue_script('jquery');
// Load draggable
wp_enqueue_script('jquery-ui-draggable');
//load your script
wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable'), '1.0', true);
// Load validate
wp_enqueue_script('validate','http://ajax.Microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js', array('jquery'), true);
}

add_action('wp_enqueue_script', 'mytheme_enqueue_script');

Entschuldigung, ich habe das noch nicht getestet. Also kann ich weg sein.

2
chrisjlee

Ich habe seitdem "jquery" rausgenommen, da es scheinbar zweimal geladen wird, unabhängig davon.

Dies sollte nicht passieren und wird wahrscheinlich durch einen anderen (schlechten) aktiven Code verursacht.

Sie haben eine falsche true in der validate Registrierung - nachdem die Quelle das Dependencies Array erreicht hat und true dort bedeutungslos ist.

Ansonsten scheint das im Allgemeinen in Ordnung zu sein. Funktioniert ab Schnelltest. Könnten Sie genauer beschreiben, was genau und wie "nicht funktioniert"?

1
Rarst