如何将循环中的值输出到Java脚本数组中

时间:2019-04-30 作者:Noah

我正在Wordpress中构建一个自定义快捷码。基本上,我希望这样做的是:

动态地从一组高级自定义字段中提取值,并将这些值输出到一个以逗号分隔的javascript数组中。我遇到的问题是,我可以成功地在这组字段上运行循环,获取所有值并将其输出到页面上。然而,当我尝试将它们存储到变量中,并将其拉入javascript数组时($v 存储在output 中引用的变量urls 数组),它只返回其中一个值。

如何从foreach ( $value as $v) 要在urls 带逗号分隔的数组?任何帮助都将不胜感激:)

add_shortcode(\'training-player\', \'training_player\');
// Add shortcode for Diagnostic media playlist
function training_player() {
  $author_id = get_the_author_meta(\'ID\');
  $fields = acf_get_fields(405);
  if( $fields ) {
    echo \'<div id="player"></div>\';
    foreach( $fields as $field ) {
      $value = get_field( $field[\'name\'], \'user_\'. $author_id );
      if(!empty($value)) {
        if ($value) {
          foreach ( $value as $v) {
            echo $v;
          }
        }
      }
    }
    echo "
    <script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.js\'></script>
    <script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.playlist.js\'></script>
    <script>
      var output = \'$v\';
      console.log(output)
      vimeowrap(\'player\').setup({
        urls: [
          output
        ],
        plugins: {
          \'playlist\':{}
        }
      });
    </script>
    ";
  }
}

2 个回复
SO网友:Lucio Coire Galibone

这不是一个真正的Wordpress问题。然而,您可能需要implode php函数,使用逗号作为粘合剂。

foreach( $fields as $field ) {
  $value = get_field( $field[\'name\'], \'user_\'. $author_id );
  if(!empty($value)) {
    if ($value) {
      $v = implode(\',\', $value);
    }
  }
}

SO网友:phatskat

这可能会得到您想要的输出:

<?php
add_shortcode(\'training-player\', \'training_player\');
// Add shortcode for Diagnostic media playlist
function training_player() {
    $author_id = get_the_author_meta(\'ID\');
    $fields    = acf_get_fields(405);
    $js_values = [];

    if( $fields ) {
        echo \'<div id="player"></div>\';
        foreach( $fields as $field ) {
            $value = get_field( $field[\'name\'], \'user_\'. $author_id );

            if(!empty($value)) {
                if ($value) {
                    foreach ( $value as $v) {
                        $js_values[] = $v;
                    }
                }
            }
        }

        echo "
<script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.js\'></script>
<script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.playlist.js\'></script>
<script>
var output = " . wp_json_encode( $js_values ) . ";
console.log(output)
vimeowrap(\'player\').setup({
urls: [
output
],
plugins: {
\'playlist\':{}
}
});
</script>
";
    }
}
我们正在存储$v$js_values 数组,然后使用wp_json_encode 而不是直接将其放入Javascript。

为便于将来参考,您可能需要查看[wp_localize_script](https://developer.wordpress.org/reference/functions/wp_localize_script/) 从PHP到Javascript的“WordPress方式”获取值,并使用[wp_enqueue_script](https://developer.wordpress.org/reference/functions/wp_enqueue_script), 但这超出了这个答案的范围。

相关推荐

无法获取Function.php代码以删除实时站点上丢失的密码链接

从我的live站点中删除丢失的密码文本时遇到问题。出于某种原因,在彻底检查了几乎所有内容后(我想我一定错过了什么),文本仍在显示。我把它放在一个儿童主题中,并测试了儿童主题是“带来阅读”,它确实是。很奇怪。更改了PHP版本等,所有内容都是最新的,仍然显示。但在我的本地和现场测试站点上,它正在按需要删除。对于可能导致问题的原因,如有任何帮助,我们将不胜感激。function remove_lostpassword_text ( $text ) { if ($text == \'Lo