我如何遍历这个短码数组?

时间:2017-05-02 作者:user117473

这就是$attr 创建时间:

$attr = shortcode_atts( array(
        \'chart\' => null,
        \'footer_caption\' => null,
    ), $attr, $shortcode_tag );
这是print_r 属于$attr 在这篇文章中(如果数组维度或多或少会发生变化,那么有3个图表):

    Array
(
    [chart] => 23
    [footer_caption] => label 1
)

    Array
(
    [chart] => 22
    [footer_caption] => label 2
)

    Array
(
    [chart] => 24
    [footer_caption] => label 3
)
那我需要通过$attr[\'footer_caption\'] 到定义highcharts插件设置的JS文件,如下所示:

    <script>
    var captionLabel = "<?php echo $attr[ \'footer_caption\' ]; ?>"
    </script>
这是js文件中的设置,我在其中传递$attr[\'footer_caption\'] 字符串通过captionLabel:

   Highcharts.setOptions({
  credits: {
          enabled: false
  },
  chart: {
          type: \'column\',
          events: {
              load: function () {
                var label = this.renderer.label(captionLabel)
                  .css({
                      width: \'400px\',
                      fontSize: \'9px\'
                  })
                  .attr({
                      \'r\': 2,
                      \'padding\': 5
                  })
                  .add();

                  label.align(Highcharts.extend(label.getBBox(), {
                      align: \'center\',
                      x: 0, // offset
                      verticalAlign: \'bottom\',
                      y: 20 // offset
                  }), null, \'spacingBox\');

              }
          },
          marginBottom: 120
      },
      legend: {
        align: \'center\',
        verticalAlign: \'bottom\',
        y: -30
    },
    decimalPoint: \',\',
    thousandsSep: \'.\'
});
但它只向每个图表输出最后一个页脚标题(在本例中为“标签3”)。我想它需要一个foreach或for循环,但我不知道如何在本例中执行,因为我看不到索引。这就是$attr[\'footer_caption\'] 输出:

[02-May-2017 15:31:17 UTC] label 1
[02-May-2017 15:31:18 UTC] label 2
[02-May-2017 15:31:19 UTC] label 3
有人能给我指出正确的方向吗?我知道这个问题可能令人困惑。

1 个回复
SO网友:Mervan Agency

看起来您正在JS文件中设置公共图表选项,但由于所有图表都将具有不同的页脚标题,因此不应将其设置为公共选项。

正如您指定的,该帖子有三个图表,这意味着captionLabel JavaScript变量被声明并被赋值3次(如果这是短代码的一部分)。因此,分配给captionLabel 将是label 3 然后在js文件中设置图表选项。因此,所有图表都有label 3 作为页脚标题。

可能您可以根据每个图表在图表选项中设置标签。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请