Wordpress - 将PHP数组从ACF中继器传递到JavaScript文件



我正在使用Wordpress和Advanced Custom Fields来循环浏览YouTube视频列表。我想做的是在我的模板中创建一个包含所有视频 ID 的 PHP 数组,然后将该数组传递给外部 JavaScript 文件。我认为这可以通过wp_localize_script来完成,但我不确定该怎么做。这是我到目前为止所拥有的:

功能.php

global $video_ids;
wp_register_script('player', get_template_directory_uri() . '/js/player.js', array('jquery'), '1.0', true);
wp_enqueue_script('player');
wp_localize_script('player', 'videos',
array( 
'video_ids' => $video_ids
)
);

单.php

<?php global $video_ids; $video_ids = array(); ?>
<?php if(have_rows('videos')):
while (have_rows('videos')) : the_row(); 
array_push($video_ids, get_sub_field('video_id'));
endwhile;
endif;
?>

播放器.js

console.log(videos.video_ids);

现在控制台日志返回null但是当我在单个.php模板上print_r$video_ids数组时,它正确显示数组。我错过了什么?

你在PHP中有数组,但你试图在javascript中访问它。 以下内容应该可以解决您的问题,它将 php 数组编码为 json 并将其回显到脚本变量中,以便可以在 javascript 中访问它。将其粘贴到单个代码下方.php如下所示

<?php global $video_ids; $video_ids = array(); ?>
<?php if(have_rows('videos')):
while (have_rows('videos')) : the_row(); 
array_push($video_ids, get_sub_field('video_id'));
endwhile;
endif;
?>
<script type='text/javascript'>
<?php
$ids = json_encode($video_ids);
echo "var videos = ". $ids . ";n";
?>
videos.forEach(video => console.log(video));
</script>

最新更新