将属性动态添加到短码

时间:2015-04-09 作者:Yazmin

我希望为帖子中使用的短代码动态添加一个属性。例如,假设我们从以下内容开始:

[shortcode-name]
我想在短代码中添加“attribute=xxx”部分,这样它实际上就是这样:

[shortcode-name attribute=xxx]
仅针对帖子中遇到的第一个短代码。这可能吗?

谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

未测试(目前无法测试),但您应该能够使用筛选器添加属性。。。类似于:

function test_sc($atts,$content) {
  // echo \'test_sc\';
  $atts = shortcode_atts(
      array(
              \'foo\' => \'no foo\',
              \'bar\' => \'default bar\',
      ), 
      $atts, 
      \'testsc\' 
  );

  // var_dump($atts);

}
add_shortcode(\'testsc\',\'test_sc\');

function test_shortcode_att_add($atts) {
  # this filter should only run once (first use on page)
  remove_filter(\'shortcode_atts_testsc\',\'test_shortcode_att_add\');
  $atts[\'xxx\'] = \'yyy\';
  return $atts;
}
add_filter(\'shortcode_atts_testsc\',\'test_shortcode_att_add\');
当然,我不知道您想要添加什么属性,或者它可能依赖于什么类型的支持代码。

结束

相关推荐

Multiple level shortcodes

我正在开发一个插件,遇到了一种情况,我希望有人能帮我找到一个解决方案。我想要一个短代码结构,如:[shortcode_1] [shortcode_2] [shortcode_3] [shortcode_4][/shortcode_4] [/shortcode_3] [/shortcode_2] [/shortcode_1] 但如果我使用add\\u短代码,只有第一个短代码有效。。。有没有办法得到这样的短代码结构?谢谢