Shotcode error on functions

时间:2013-05-15 作者:user2295500

您好,我有一个生成错误的短代码。

有人能帮忙吗?

add_shortcode(\'do-action\', \'do_action_shortcode\');

function do_action_shortcode($atts, $content = \'\') {
  ob_start();
  do_action($content);
  $out = ob_get_contents();
  ob_end_clean();
  return $out;
}

1 个回复
SO网友:s_ha_dum

do_action 是用于运行动作挂钩的WordPress函数。我想这就是你想要做的。有鉴于此,第一个参数(本例中唯一的参数)需要是动作挂钩名称。如果您给它传递了一个有效的钩子名,并将一个函数附加到该钩子上,那么这段代码可以工作。

换句话说,如果你这样设置。。。

function do_action_shortcode($atts, $content = \'\') {
  ob_start();
  do_action($content);
  $out = ob_get_contents();
  ob_end_clean();
  return $out;
}
add_shortcode(\'do-action\', \'do_action_shortcode\');

function generic_cb() {
  echo \'generic content\';
}
add_action(\'testhook\',\'generic_cb\');
。。。所以你有一个动作testhook, 并使用类似于。。。

[do-action]testhook[/do-action]
。。。在你的帖子正文中。它确实有效。

You should not be using hyphens in the shortcode name though.

我不知道你到底错在哪一部分,但希望工作模型(测试)能帮助你解决问题。

我发现实际生成错误的唯一方法是generic_cb (在示例中)未定义。如果您发送一个不存在的钩子名称。。。

[do-action]notahook[/do-action]
。。。它什么都不做。

结束

相关推荐

Wrap text around shortcode

我在插件中使用了一个短代码处理程序。短代码可以有不同的(可选)参数。例如,可以在静态WordPress页面上使用两个短代码,在短代码之前、之间和之后都有文本。例如: Lorem ipsum dolor sit amet, consetetur sadipscing elitr <table> <tr> <td>[shortcode option=\"1\"]</td>&#