JS im Header hinzufügen, wenn wp_enqueue_script in einem Shortcode verwendet wird

Ich versuche eine JavaScript-Datei in die Kopfzeile meiner Website einzufügen.

Wenn ich in meiner Haupt-Plugin-Datei folgendes hinzufüge, ist das JS in der Kopfzeile enthalten:

function wpdocs_theme_name_scripts() { wp_register_script('googlesearch', 'https://maps.googleapis.com/maps/api/js'); wp_enqueue_script('googlesearch'); } add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' ); 

Aber ich möchte die JS nur für einen bestimmten Shortcode einbinden, ich füge folgendes in die Haupt-Plugin-Datei ein:

 function wpdocs_theme_name_scripts() { wp_register_script('googlesearch', 'https://maps.googleapis.com/maps/api/js'); } add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' ); 

Und das Folgende im Shortcode:

 wp_enqueue_script('googlesearch'); 

Jetzt ist die JS-Datei in der Fußzeile der Website enthalten.

Ich habe versucht, manuell anzugeben, dass die JS wie in der Kopfzeile geladen werden soll, aber es lädt es noch in der Fußzeile:

 wp_enqueue_script( 'googlesearch', 'https://maps.googleapis.com/maps/api/js', array(), '1.0.0', false ); 

Hat jemand eine Idee, warum das passiert? Schätze jede Hilfe!

Solutions Collecting From Web of "JS im Header hinzufügen, wenn wp_enqueue_script in einem Shortcode verwendet wird"

Die Seite wird in der folgenden Reihenfolge erstellt und ausgegeben: Kopfzeile, Inhalt, Fußzeile. Shorcode wird während des Aufbaus des Seiteninhalts ausgeführt, wenn der Header bereits auf der Seite ausgegeben wird. Es ist also unmöglich, auf dieser Stufe ein Skript zum Header hinzuzufügen: Es ist zu spät.

Während es eine ziemlich “schmutzige” Lösung ist, können Sie den gewünschten Effekt wie folgt erreichen:

 function wpdocs_theme_name_scripts() { wp_register_script('googlesearch', 'https://maps.googleapis.com/maps/api/js'); if(is_singular()){ global $wp_query; $postid = $wp_query->get_queried_object_id(); $mypost = get_post($postid); $unfiltered_content = $mypost->post_content; if(has_shortcode($unfiltered_content,'')){ wp_enqueue_script('googlesearch'); } } } add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' ); 

Glückliche Kodierung, Kuchenundkakao