我发布了一个插件,我的一个客户报告了一个问题,插件在他们网站的标题区域输出广告。
我定义了一个函数,其中包含我的短代码定义,例如,该函数包含以下几个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>
标签尽可能多,但我可能错了。
SO网友:Chip Bennett
如果我没有弄错,我认为问题在于你的短代码回调回显,而不是返回其内容,并且你将其设置为这样,以便短代码内容输出到帖子内容之外。
如果是这样的话,你就采取了错误的方法。
您的快捷码回调必须return, 而不是echo, 其输出。通过回应其内容,您正在体验您观察到的问题:
我发布了一个插件,我的一个客户报告了一个问题,插件在他们网站的标题区域输出广告。。。
这样做会导致与我的插件(输出adsense广告)和标题中的google analytics发生冲突。
要在帖子内容之外使用快捷码,必须通过do_shortcode()
:
<?php echo do_shortcode( \'[myshortcode]\' ); ?>
怎么会这样
do_shortcode()
将调用添加到模板的正确位置完全取决于主题。如果主题提供了一个合适的钩子,那么您可以钩住它。否则,您可能必须通过子主题修改模板文件。