如何在WordPress unctions.php中将短代码值传递到Head

时间:2018-11-23 作者:user1726126

我正在尝试为wordpress帖子上的图表创建一个快捷代码。到目前为止,我已经使用了短代码,我可以看到短代码值正在被传递,但我需要知道的是如何将这些值传递到Google图表,以便正确工作。以下是我目前掌握的代码:

function chart_shortcode($atts) {

    $a = shortcode_atts( array(
   \'value1\' => \'\',
   \'value2\' => \'\',
   \'value3\' => \'\'
  ), $atts );

 return \'<div id="donut" style="width: 745px; height: 500px;"></div>\';
}

add_shortcode(\'chart\', \'chart_shortcode\');



function header_metadata() {

    // Post object if needed
    // global $post;

    // Page conditional if needed
    // if( is_page() ){}

  ?>

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
      google.charts.load(\'current\', {\'packages\':[\'corechart\']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {

        var data = google.visualization.arrayToDataTable([
          [\'Effort\', \'Amount given\'],
          [\'value1\',     75],
          [\'value2\',     20],
          [\'value3\',     5],
        ]);

        var options = {
          title: \'Energy Breakdown\',
          pieHole: 0.4,
          pieSliceTextStyle: {
            color: \'white\',
          },
        };

        var chart = new google.visualization.PieChart(document.getElementById(\'donut\'));
        chart.draw(data, options);
      }
</script>

<?php

}
add_action( \'wp_head\', \'header_metadata\' );


?>
所以我想要的是告诉图表这里的值1,2,3,而不是75,20和5的值:

  function drawChart() {

    var data = google.visualization.arrayToDataTable([
      [\'Effort\', \'Amount given\'],
      [\'value1\',     75],
      [\'value2\',     20],
      [\'value3\',     5],
    ]);
有效的短代码是:

[chart value1="75" value2="20" value3="5"]

1 个回复
SO网友:Rick Hellewell

据我所知,短代码将用于页面/帖子的内容中,以及(与4.9)小部件中。页面上的其他点不支持它们,仅在页面/帖子/小部件内容中支持。

抄本:https://codex.wordpress.org/Shortcode

[可湿性粉剂]仅扩展帖子、页面或自定义帖子类型内容中的短代码。

但我认为您的代码不应该设置短代码。也许应该设置一个全局变量,以便在其他地方使用。(但已经很晚了,我受到了过度火鸡的影响……)

结束

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默