听起来你需要一个过滤器the_content
.
function add_content_wpse_97277($content) {
global $post;
if ($post->ID == 123) {
$content .= \'additional content\';
}
return $content;
}
add_filter(\'the_content\',\'add_content_wpse_97277\');
我不知道你需要什么条件。你没有在问题中解释这一点。以上内容应与帖子匹配
ID
第123页。
对于索引页,您可能需要将相同的回调添加到the_excerpt
钩您可以使用控制函数添加内容的位置template tags 喜欢is_home
或is_single
.
老实说,这就是你应该在帖子上方和下方添加内容的方式。从一个动作中回显内容,如the_post
可以工作,但也是让自己陷入麻烦的好方法。在这种情况下,我认为这特别危险。the_post
内部运行setup_postdata
它经常在一个立即回显内容的循环中运行,但如果该函数——setup_postdata
-- 在不会立即响应的循环中运行,例如,为了构建字符串,您的标记将造成混乱。还有loop_start
和loop_end
但我认为这不是你想要的。
看到你的问题和评论并加以考虑后,我不得不说你的基本方法是错误的。您应该使用the_content
以及the_excerpt
, 和/或可能get_the_excerpt
还要过滤。
不幸的是,过滤内容/摘录并不能满足我的需要。摘要/内容下方的帖子(循环中)通常会添加div或页脚。这意味着过滤内容/摘录不会使我的内容出现在循环帖子的底部。谢谢,非常感谢您的帮助!
引自以下评论
我怀疑有没有可靠的方法来做你想做的事。我能看到你必须使用的唯一过滤器是the_post
. 通过跟踪循环中的哪个帖子并有条件地插入内容,可以使用它在帖子之间插入内容。即:
如果post编号为0,则插入begin<div>
如果帖子编号为1,则插入</div>
和<div>
如果是最后一篇文章,则插入</div>
但是,你是going to make a mess echo
ing content from the the_post
filter 什么时候setup_postdata
在上下文中使用echo
立即生成内容——例如,在正在生成并返回字符串的上下文中。