Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress-将PHP数组从ACF repeater传递到JavaScript文件_Javascript_Php_Wordpress - Fatal编程技术网

Wordpress-将PHP数组从ACF repeater传递到JavaScript文件

Wordpress-将PHP数组从ACF repeater传递到JavaScript文件,javascript,php,wordpress,Javascript,Php,Wordpress,我使用Wordpress和高级自定义字段循环浏览YouTube视频列表。我想做的是在所有视频ID的模板中创建一个PHP数组,然后将该数组传递给外部JavaScript文件。我认为这可以通过wp\u localize\u script实现,但我不确定如何实现。以下是我目前掌握的情况: functions.php: global $video_ids; wp_register_script('player', get_template_directory_uri() . '/js/player.js

我使用Wordpress和高级自定义字段循环浏览YouTube视频列表。我想做的是在所有视频ID的模板中创建一个PHP数组,然后将该数组传递给外部JavaScript文件。我认为这可以通过
wp\u localize\u script
实现,但我不确定如何实现。以下是我目前掌握的情况:

functions.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 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;
?>
console.log(videos.video_ids);
single.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 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;
?>
console.log(videos.video_ids);

现在控制台日志返回
null
,但是当我在single.php模板上打印
$video\u id
数组时,它正确地显示了数组。我遗漏了什么?

您有PHP中的数组,但您试图用javascript访问它。 下面应该可以解决您的问题,它将php数组编码为json,并在脚本变量中对其进行响应,以便可以在javascript中访问它。将其粘贴到single.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>

videos.forEach(video=>console.log(video));