Ist es möglich, das Youtube-API-Skript in die Warteschlange einzureihen oder muss es inline sein?

Der folgende Code ist der Hauptteil einer function in meiner functions.php, die ein div und ein script zurückgibt, die letztendlich einen youtube API iframe an die Vorlage ausgeben, von der der Code aufgerufen wurde. Im Moment funktioniert es gut; Ich möchte jedoch das Javascript in die Warteschlange stellen oder es zumindest aus meinem PHP-Code entfernen. Ich habe es müde, es in meine JavaScript-Hauptdatei zu verschieben (die in der Fußzeile in die Warteschlange gestellt wird), aber es funktioniert nicht, wenn ich es dorthin verschiebe. Edit : Ich hatte die wp_localize_script , um zu vermeiden, dass ich wp_localize_script verwenden wp_localize_script , um aus dem Bild zu kommen.

Sicherlich gibt es einen besseren Weg (oder WordPress Weg), dies zu tun?

 $return = ' 
var tag = document.createElement("script"); tag.src = "http://www.youtube.com/player_api"; var firstScriptTag = document.getElementsByTagName("script")[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player("'. $postid .'player", { height: "315", width: "560", videoId: "'. $videoID .'", }); } '; return $return;

Solutions Collecting From Web of "Ist es möglich, das Youtube-API-Skript in die Warteschlange einzureihen oder muss es inline sein?"

enqueued() sicher, dass die YT-API in die enqueued() und zur Fußzeile hinzugefügt wird.

 function wp_enqueue_scripts__youtube_api() { wp_enqueue_script( 'yt-player-api', 'http://www.youtube.com/player_api', array(), false, true ); } add_action( 'wp_enqueue_scripts', 'wp_enqueue_scripts__youtube_api' ); 

Als nächstes gib dein Div irgendwo auf der Seite aus.

 

Dann haken Sie sich in wp_footer und stellen Sie sicher, dass Sie die Priorität höher als 20 . Bis dahin sollte das Skript auf der Seite gerendert werden und Sie können dies mit wp_script_is() überprüfen.

 function wp_footer__youtube_api() { if ( wp_script_is( 'yt-player-api', 'done' ) ) { $postid = 123; $videoID = 123; ?>  < ?php } } add_action( 'wp_footer', 'wp_footer__youtube_api', 20 );