Kann wp_localize_script innerhalb eines Shortcodes verwendet werden?

Ich entwickle ein Plugin, und ich möchte Daten für den clientseitigen JS-Code zur Verfügung stellen, der von einem meiner Shortcodes ausgeführt wird. wp_localize_script scheint der offensichtliche Weg dafür zu sein, aber es funktioniert nicht für mich: mein Skript ist enthalten, aber nicht die JS-Daten. Die Daten hängen von einem Wert in der Querystring ab, der vom Shortcode gelesen wird. Ich vermute, dass etwas mit dem relativen Timing von Skripten und Shortcodes im WP-Lebenszyklus zu tun hat. Ich habe etwas JS-Code, der nicht in einem Shortcode verwendet wird, der glücklich mit Daten mit wp_localize_script .

Abgekürzte Plugin-Datei:

 function shortcode_orderitem() { $id = intval($_GET['id']); $productData = retrieveSingleProductData($id); wp_localize_script('orderitem', 'productData', $productData); //THIS DOES NOT WORK return orderItem_buildHTML($productData); } function enqueue_general_scripts() { wp_enqueue_script('orderitem', plugin_dir_url(__FILE__) . 'client/orderitem.js', ['jquery']); wp_enqueue_script('mainbag', plugin_dir_url(__FILE__) . 'client/mainbag.js', ['jquery']); $url = admin_url( 'admin-ajax.php' ); wp_localize_script('mainbag', 'bagParams', ['url' => $url]); //THIS WORKS } add_shortcode('orderitem', "shortcode_orderitem"); add_action( 'wp_enqueue_scripts', 'enqueue_general_scripts' ); 

Gibt es einen grundlegenden Grund, warum Sie wp_localize_script direkt in einem wp_localize_script können? Vermisse ich etwas anderes? Gibt es einen Weg dahin? Danke im Voraus!

Solutions Collecting From Web of "Kann wp_localize_script innerhalb eines Shortcodes verwendet werden?"

Standardparameter für wp_enqueue_script geben das Skript in der function wp_head aus. Shortcodes werden normalerweise später ausgeführt, wenn der Hauptinhalt ausgegeben wird.

In diesem Fall hat der Aufruf von wp_localize_script im Shortcode-Handler keine Auswirkung, da das Skript bereits ausgegeben wurde.

Wenn der Parameter $in_footer bei der Enqueueing des Skripts auf ” true gesetzt wird, wird die Skriptausgabe bis zu wp_footer , sodass wp_localize_script in diesem Fall erfolgreich ist.