【发布时间】:2016-03-03 09:12:02
【问题描述】:
问题
如何先输出标签相关的帖子,然后如果标签相关的帖子少于4个,则用类别相关的帖子填充剩余的4个位置?
场景
有时一个帖子的标签很少,或者它所标记的标签只有很少的帖子。当输出“标签相关的帖子”时,该区域要么非常稀疏,只有 1 个或 2 个帖子,要么完全是空的。
为了解决这个问题,如果没有足够的标签相关帖子来满足posts_per_page => X,最好显示相关类别的帖子。
所以,是这样的:
场景A——如果存在超过4个标签相关的帖子,那么:
Related Posts:
Show the below posts:
1. tag-related post #1
2. tag-related post #2
3. tag-related post #3
4. tag-related post #4
Do Not show the below posts:
5. tag-related post #5
6. tag-related post #6
7. tag-related post #7
...
场景B——如果只有2个标签相关的帖子存在,那么:
Related Posts:
Show the below posts:
1. tag-related post #1
2. tag-related post #2
3. category-related post #1
4. category-related post #2
Do Not show the below posts:
5. category-related post #3
6. category-related post #4
7. category-related post #5
...
我尝试过的
我正在使用的税务查询:
// start of the tax_query arguments
$args = array( 'posts_per_page'=>4, 'post__not_in' => array($post->ID), 'tax_query' => array( 'relation' => 'OR' ) );
// get current post tags
$tags = wp_get_object_terms( $post->ID, 'post_tag', array( 'fields' => 'ids' ) );
if ( !empty( $tags ) ) {
$args['tax_query'][] = array(
'taxonomy' => 'post_tag',
'field' => 'id',
'terms' => $tags
);
}
// get current post categories
$categories = wp_get_object_terms( $post->ID, 'category', array( 'fields' => 'ids' ) );
if ( !empty( $categories ) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $categories
);
}
// the query
$related_query = new WP_Query( $args );
据我了解,税务查询说“获取相同类别的帖子,然后获取相同标签中的帖子,然后输出帖子,直到屏幕上显示 4 个。”
然而,它仍然首先输出类别帖子(其中有很多),这满足了屏幕上的 4 个帖子规则,并遗漏了最重要的与标签相关的帖子。我尝试移动代码,使用AND 而不是OR,这不管用,对我来说毫无意义。
我也看过这些帖子:WordPress - producing a list of posts filtered by tag and then category 和 Wordpress query posts by tag and category,但它们是关于输出按标签 AND 类别过滤的帖子列表。我需要首先按标签关联的帖子,如果有 4 个或更多,则只输出前 4 个。如果少于 4 个,则输出最多与类别相关的帖子以满足 4 个帖子的条件。
显然我误解了查询和/或问题,因此我们将不胜感激。
【问题讨论】: