WordPress:将php数组放入JS函数

我想使用一个在WP-Loop中检索到的javascript函数的PHP数组,并在一个单独的js文件中.

这就是我在循环中回显我的php数组的方式:

$images = get_field('galerie');
if( $images ): ?>
    <?php 
    $i = 0;
    foreach( $images as $image ): 
        $i++;
        ?>
        <div class="slider">
             <?php echo $image['url']; ?>');">
        </div>
    <?php endforeach; ?>
<?php endif; ?>

在最终代码中,它看起来像:

<div class="slider">   
   THERE_GOES_THE_IMG_URL_1 
   THERE_GOES_THE_IMG_URL_2 
   THERE_GOES_THE_IMG_URL_3
</div>

但是我需要在我的Vegas Slider JQuery插件中使用图像URL.该代码位于单独的custom.js文件中,如下所示:

$(".slider").vegas({
      slides: [
          { src: "THERE_GOES_THE_IMG_URL_1" },
          { src: "THERE_GOES_THE_IMG_URL_2" },
          { src: "THERE_GOES_THE_IMG_URL_3" }
      ]
  });

我如何将图像URL从php循环传递到jQuery插件?

谢谢你的帮助!
卡拉

解决方法:

我不知道您的数组的结构,但是您可以使用json_encode($images)并使用wp_localize_script将数据传递到JS变量中.因此,在functions.php中,您可以这样做:

$images = get_field('galerie');
$images = json_encode($images);

wp_enqueue_script( 'my_js_file', get_template_directory_uri() . '/js/custom.js' );
$data_to_send = array(
    'images' => $images
);
wp_localize_script( 'my_js_file', 'object_name', $data_to_send );

然后在您的javascript文件custom.js中,您可以像这样获得所需的信息:

var my_images = JSON.parse(object_name.images);
var imagesToAppend = [];
for(var i = 0; i < my_images.length; i++){
    var img_src = my_images[i].url;
    imagesToAppend[i] = { src: img_src };
}
console.log(imagesToAppend);
$(".slider").vegas({
      slides: imagesToAppend
  });

请注意,您必须使用JSON.parse解析响应字符串.

一种简化的解决方案是将URL的名称从ACF更改为src,因此您不必使用该循环并将对象的键更改为src,然后可以将my_images附加到Vegas滑块init,如下所示:

var my_images = JSON.parse(object_name.images);
$(".slider").vegas({
  slides: my_images
});

另外,如果您以其他方式包括了custom.js脚本,而我在上面已举例说明,请删除该脚本,否则您将获得两次相同的响应.

它确实取决于您的数组结构,但这应该可以工作.

另外,您可以阅读有关wp_localize_script here的更多信息.

上一篇:如果在JavaScript中拼接克隆的数组,为什么原始数组会被拼接?


下一篇:php-Laravel表单回显变量