WordPress: apply_filters & add_action to the_content = EVIL?
我在实际教程中问了这个问题,但是不确定它快快两个月了,所以我会在任何时候得到答案...所以我会在这里随便看看... <铅>
教程在这里:构建WordPress插件以将作者传记添加到您的帖子中
为总结本教程以及问题所在,本教程在内容的末尾添加了一个Author Bio,如下所示(简称):
1 2 3 4 5
| function x($content) {
return $content ."Author Bio";
}
add_action('the_content','x'); |
问题:
当有人使用时:
1 2
| $z = apply_filters('the_content', 'some content here');
echo $z; |
如果某个页面的中间回显了$ z,则Author Bio将最终应用于$ za || ,作者简介将位于某些页面的中间。正确的? (这是正确的,因为我已经对其进行了测试...)
是否有更好的方法将某些内容应用于the_content挂钩的结尾/下方/下方?不是add_action(a€?the_contenta€?, a€?some_functiona€?),因为这对我来说似乎是邪恶的...
是
还是apply_filters(a€?the_contenta€?, a€?some content herea€?)不是规范,或者开发人员不应该在其WordPress模板中使用某些东西? (这似乎很正常,至少在循环外Google格式化" the_content "时)...
使用apply_filters('the_content','some content here')可能不是一个"规范"(我不知道。我以前没有见过,但是如果我需要格式化文本,那就是我要做的)。有效使用过滤器来获取某些格式如内容的文本。不幸的是,没有更好的方法将某些东西添加到插件的内容中。这就是这些事情的工作方式。
但是,有一种(不是最佳的)规避方法。作为插件设置/安装过程的一部分,让用户将自定义函数调用,操作或过滤器插入其主题。我知道有几个插件可以做到这一点,所以并不少见。像这样的东西:
do_action('my_super_awesome_bio_hook');
可以让您不必担心在意外(和意外)内容中添加简介。更好的是插入过滤器:
echo apply_filters('my_super_awesome_bio_filter_hook','');
这将允许您的插件修改履历,但也允许使用该插件的人在必要时覆盖它(例如在仅使用摘录的页面上,例如搜索结果等)。
希望这会有所帮助。
此外,还有一个小附录:您应该使用add_filter,而不是add_action来添加作者简介。 add_action仍然有效,但是它是您要使用的过滤器。
- 感谢John的答复和添加的提示...我可以假定在为Wordpress开发主题/插件时," apply_filters('the_content','此处的某些内容')"不是常见的做法吗?似乎任何这样做的人都会向其他任何插件/主题元素打开蠕虫罐,从而向" the_content"添加动作/过滤器...如果apply_filters可以选择仅应用任何钩子的默认过滤器,那将很好...
-
是的,出于您所说的原因,这不是常见的做法。您并不总是知道the_content最终会调用什么。一个简单的例子就是简单的Facebook Connect。有时会在内容中添加一个"赞"按钮。如果您希望能够将the_content的过滤器应用于文本而无需执行操作,则可以始终查看wp-includes / default-filters.php来查看它所经历的功能,然后调用这些功能而不是使用过滤器。
我正在开发的小部件遇到了类似的问题。我刚发现:
http://codex.wordpress.org/Function_Reference/wpautop
我现在要使用哪个代替add_filters('the_content')。我需要所见即所得的格式,但是我不想将任何内容附加到我的内容中,因为它不再是传统内容。