向系统添加快捷代码的函数的最佳挂钩?

时间:2013-11-21 作者:Branndon

我发布了一个插件,我的一个客户报告了一个问题,插件在他们网站的标题区域输出广告。

我定义了一个函数,其中包含我的短代码定义,例如,该函数包含以下几个add_shortcode( \'myshortcode\', \'my_function\' );

我通过以下命令执行该功能add_action( \'init\', \'add_my_shortcodes\');

这样做会导致与我的插件(输出adsense广告)和标题中的google analytics发生冲突。

我正在为我的add\\u操作测试不同的钩子位置,看起来add_action( \'loop_start\', \'add_my_shortcodes\');

如果我的插件是用于输出广告的,那么什么是最好的挂钩位置?我需要它在模板或内容中的任何位置都可用。例如,他们可以将其放在帖子、边栏小部件中,或者通过do_shortcode 在其模板文件中。

为了确保在生成任何内容之前注册了我的短代码,但在它们的头脚本之后,我沿着此列表向下移动http://codex.wordpress.org/Plugin_API/Action_Reference 直到广告正常运作。我最后落在了钩子上loop_start 这听起来不是一个理想的地方。

有人能建议最佳挂钩位置,以便在任何输出之前执行,但在打开之后执行吗<body> 标签我想我需要尽可能靠近<body> 标签尽可能多,但我可能错了。

1 个回复
SO网友:Chip Bennett

如果我没有弄错,我认为问题在于你的短代码回调回显,而不是返回其内容,并且你将其设置为这样,以便短代码内容输出到帖子内容之外。

如果是这样的话,你就采取了错误的方法。

您的快捷码回调必须return, 而不是echo, 其输出。通过回应其内容,您正在体验您观察到的问题:

我发布了一个插件,我的一个客户报告了一个问题,插件在他们网站的标题区域输出广告。。。

这样做会导致与我的插件(输出adsense广告)和标题中的google analytics发生冲突。

要在帖子内容之外使用快捷码,必须通过do_shortcode():

<?php echo do_shortcode( \'[myshortcode]\' ); ?>
怎么会这样do_shortcode() 将调用添加到模板的正确位置完全取决于主题。如果主题提供了一个合适的钩子,那么您可以钩住它。否则,您可能必须通过子主题修改模板文件。

结束

相关推荐

元盒子:‘admin_init’还是‘add_meta_box’钩子?

在自定义帖子类型中设置元框时,我一直使用add_meta_boxes 挂钩,例如。add_action(\'add_meta_boxes\', \'meta_box_setup\'); function meta_box_setup() { add_meta_box( \'mb_movie_review\', \'Movie Review Details\', \'display_movie_re