0

我希望有人可以帮助我解决这个问题。我想在我的 WordPress 循环中添加一个自定义帖子类型(见证),并每隔几篇帖子显示一个。我使用操作将自定义帖子类型添加到循环中pre_get_posts,它们显示在循环中,但我只想将这个帖子类型分散到帖子中,而不是将它们放在一起。有没有办法做到这一点?任何帮助,将不胜感激。

4

1 回答 1

1

如果我没看错,你会得到一个查询,它同时获取常规帖子和自定义帖子类型推荐。所以理论上你可以拉出 10 个结果,所有这些都是帖子或所有这些都是推荐,这取决于你的搜索条件。

您可能想要做的是进行两个查询,一个用于帖子,一个用于推荐。这将为您提供两个 post 对象数组,然后根据递增的计数器轻松循环并显示一种或另一种类型。

非常粗略,例如:

$args = array('post_type'=>'post', 'posts_per_page'=>9, 'category_name'=>'news);
$posts = get_posts($args);

$args = array('post_type'=>'testimonials', 'posts_per_page'=>3);
$testimonials = get_posts($args);

/** see how many of the regular posts you got back */
$post_count = count($posts);
/** see how many testimonials you got back */
$testimonial_count = count($testimonials);
/** add them up to get the total result count */
$total_count = $post_count + $testimonial_count;

/** Loop through the total number of results */
for($i = 1; $i <= $total_count; $i++){

/** assuming you want to show one testimonial every third post */
if($i % 3 == 0){
  /** this means you're on the a third post, show a testimonial */
  setup_postdata($testimonials[$i]);
}
else{
  /** show a regular post */
  setup_postdata($posts[$i]);
}

/** and now handle the output */
?><h1><?php the_title();?></h1><?php

}

在这个例子中,它总共提取了 12 个帖子——9 个帖子和 3 个推荐——然后每隔三个帖子显示一个推荐。它假设您实际上拥有每个正确的数字。如果您只取回两个推荐信,您会收到错误,因此您需要在一个生产站点使用三元运算符之后的一些代码来完成它,以确保有匹配的推荐信,如果没有显示常规发布等。但应该让你朝着正确的方向前进。

于 2013-07-16T00:59:08.840 回答