Возможно ли вставить в очередь скрипт API Youtube или он должен быть встроенным?

Код ниже является основной частью функции в моих functions.php, которая возвращает div и script которые в конечном итоге выводят iframe API youtube в шаблон, из которого был вызван код. На данный момент он работает нормально; однако я хотел бы поставить в очередь javascript или, по крайней мере, перенести его из моего PHP-кода. Я устал переместить его в свой основной файл JavaScript (который находится в нижнем колонтитуле), но он не работает, когда я его перемещаю. Редактирование : я жестко закодировал vars, чтобы не использовать wp_localize_script чтобы выйти из картинки.

Неужели есть лучший способ (или WordPress) сделать это?

 $return = ' <div id="' . $postid . 'player"></div> <script> 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 .'", }); } </script> '; return $return; 

Solutions Collecting From Web of "Возможно ли вставить в очередь скрипт API Youtube или он должен быть встроенным?"

Во-первых, убедитесь, что YT api enqueued() и добавлен в нижний колонтитул.

 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' ); 

Затем выведите свой div где-нибудь на странице.

 <div id="' . $postid . 'player"></div> 

Затем подключите wp_footer и убедитесь, что вы установили приоритет выше 20 . К тому времени сценарий должен быть отображен на странице, и вы можете дважды проверить его с помощью wp_script_is() .

 function wp_footer__youtube_api() { if ( wp_script_is( 'yt-player-api', 'done' ) ) { $postid = 123; $videoID = 123; ?> <script id="yt-player-api-ready" type="text/javascript"> var player; function onYouTubePlayerAPIReady() { player = new YT.Player("<?php echo $postid; ?>player", { height: "315", width: "560", videoId: "<?php echo $videoID ?>" }); } </script> <?php } } add_action( 'wp_footer', 'wp_footer__youtube_api', 20 );