WordPress的:apply_filters

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仍然有效,但是它是您要使用的过滤器。


我正在开发的小部件遇到了类似的问题。我刚发现:

http://codex.wordpress.org/Function_Reference/wpautop

我现在要使用哪个代替add_filters('the_content')。我需要所见即所得的格式,但是我不想将任何内容附加到我的内容中,因为它不再是传统内容。