Wordpress:apply_filters& add_action到the_content = EVIL?

时间:2010-07-02 13:35:00

标签: wordpress-plugin wordpress

我在实际的教程中问过这个问题,但不确定我会在不久的将来得到一个答案,因为它已经快2个月了......所以我会在这里采取一个看法......

教程在这里:Build a WordPress Plugin to Add Author Biographies to your Posts

总结教程以及问题是什么,本教程在内容的末尾添加了一个Author Bio,就像这样(简短版本):

function x($content) {
     return $content . "Author Bio";
}

add_action('the_content','x');

问题:

有人使用时:

$z = apply_filters('the_content', 'some content here');
echo $z;

作者Bio将最终应用于$ z,如果$ z在某个页面的中间被回显......作者Bio会在某个页面的中间......正确吗? (这是正确的,因为我已经测试过了......)

是否有更好的方法将某些内容应用于the_content挂钩的结尾/下方/下方?除了add_action(‘the_content’, ‘some_function’),因为这对我来说似乎是邪恶的......

或者apply_filters(‘the_content’, ‘some content here’)不是开发人员不应该在他们的WordPress模板中使用的标准或东西...? (这看起来几乎是常态,至少在Google循环中格式化“the_content”)...

2 个答案:

答案 0 :(得分:3)

使用apply_filters('the_content','some content here'),虽然它可能不是'常态'(我不知道。我以前没见过,但如果我需要格式化文本,那就是我要做的),是完全有效地使用过滤器来获得一些像内容一样的文本格式。不幸的是,没有更好的方法可以从插件中添加内容到内容。这就是这些事情的运作方式。

然而,有一种(不太理想的)绕过这种方式。作为插件的设置/安装过程的一部分,让用户在其主题中插入自定义函数调用,操作或过滤器。我知道有几个插件可以做到这一点,所以这并不是那么罕见。像这样:

do_action('my_super_awesome_bio_hook');

允许您加入,而不必担心将bio添加到意外(和非预期)内容中。更好的是插入过滤器:

echo apply_filters('my_super_awesome_bio_filter_hook','');

这将允许你的插件修改bio,但也允许使用插件的人在必要时覆盖它(比如在他们只是使用摘录的页面上,比如搜索结果等)。

希望这会有所帮助。

另外,一个小的附录:你应该使用add_filter,而不是add_action来附加作者生物。 add_action仍然有效,但它是您想要使用的过滤器。

答案 1 :(得分:0)

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

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

我现在将使用而不是add_filters('the_content')。我想要WYSIWYG格式,但我不希望事物附加到我的内容,因为它不再是传统内容。