我在实际的教程中问过这个问题,但不确定我会在不久的将来得到一个答案,因为它已经快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”)...
答案 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格式,但我不希望事物附加到我的内容,因为它不再是传统内容。