听起来你需要一个过滤器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 echoing content from the the_post filter 什么时候setup_postdata 在上下文中使用echo 立即生成内容——例如,在正在生成并返回字符串的上下文中。