Können wir irgendwie wp_localize_script () verwenden, um globale js-Variablen ohne ein bestimmtes Skript-Handle zu erstellen, auf das von allen js-Dateien aus zugegriffen werden kann, selbst wenn die js-Skripte mit wp_enqueue_script nicht ordnungsgemäß in die Warteschlange gestellt wurden?
Dies ist der Code, den ich verwende, um varibale für das 'Ajaxscript'-Handle zu erstellen, sodass ich nicht auf das Objekt' Ajaxobject 'in einer js-Datei zugreifen kann, die direkt von in die header.php aufgenommen wird <script src="xxx" .... />
wp_register_script( 'ajaxscript', get_bloginfo( 'template_url' ) . '/js/ajaxscript.js', array(), $version );
wp_enqueue_script( 'ajaxscript' );
wp_localize_script( 'ajaxscript', 'ajaxobject',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'ajaxnonce' => wp_create_nonce( 'itr_ajax_nonce' )
)
);
wp-enqueue-script
wp-localize-script
Subharanjan
quelle
quelle
wp_localize_script
macht sowieso. Mit beiden Methoden können die Variablen von jedem Skript ausAntworten:
Anstatt in diesem Fall wp_localize_script zu verwenden, können Sie Ihre js-Variablen in wp_head einbinden, sodass sie für alle js-Dateien verfügbar sind, z.
Wie von @Weston Ruter vorgeschlagen, können Sie die Variablen auch json-codieren:
quelle
json_encode
hier zum Beispiel verwenden:var ajaxurl = <?php echo json_encode( admin_url( "admin-ajax.php" ) ); ?>;
Sie können alle gewünschten Daten in den
wp_head
Hook exportieren , wie die obigen Antworten zeigen. Sie solltenjson_encode
jedoch die PHP-Daten für den Export nach JS vorbereiten, anstatt zu versuchen, Rohwerte in JS-Literale einzubetten:Das Verwenden von
json_encode
erleichtert Ihnen die Arbeit und verhindert versehentliche Syntaxfehler, wenn Ihre Zeichenfolge Anführungszeichen enthält. Noch wichtiger ist es,json_encode
XSS-Angriffe zu vereiteln.quelle
Am Ende habe ich das getan. Es funktioniert jetzt !! Vielen Dank @ dot1
quelle
json_encode
JSON verwenden, anstatt es manuell zu erstellen.json_encode
jetzt :) Danke @WestonRuter !!Dies ist zwar nicht meine beste Arbeit, aber eine weitere einfache Möglichkeit, Daten in die Antwort einzufügen:
Fügen Sie dem Fensterkontext einige JS-Daten hinzu:
Dies funktioniert entweder für die Kopf- oder Fußzeilenskripte und wiederholt sich nicht.
quelle