在Wordpress页面模板中,我设置了一个WP自定义查询,用于查询名为“recipe”的自定义帖子类型和常规帖子,如下所示。这有效,但'orderby => 'date'
不起作用:页面首先列出按日期排序的常规帖子,然后按日期列出食谱。但我需要按日期排序所有这些(即混合)。
以下是我的自定义查询的定义:
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$number_of_posts = get_option('posts_per_page', 12);
$args = array(
'post_type' => array('recipe', 'post'),
'post_status' => 'publish',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'ASC',
'paged' => $paged
);
$my_loop = new WP_Query($args);
[...followed by the loop...]
我很感激任何暗示我能做些什么来达到预期的顺序。
答案 0 :(得分:1)
我自己找到了解决方案:
在我定义自定义查询之前添加remove_all_filters('posts_orderby');
时,它可以正常工作。显然,这会重置任何其他顺序,并允许'orderby' => 'date'
按预期运行。完整代码:
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$number_of_posts = get_option('posts_per_page', 12);
remove_all_filters('posts_orderby'); // ADDED
$args = array(
'post_type' => array('recipe', 'post'),
'post_status' => 'publish',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'ASC',
'paged' => $paged
);
$my_loop = new WP_Query($args);
[...]
答案 1 :(得分:0)
Q1。您使用的是哪个模板文件?
下面的查询成功地将2种帖子类型按日期合并在一起。
<?php
$args = array(
'post_type' => array('my_custom_post_type', 'post'),
'posts_per_page' => -1,
'order' => 'DESC',
'orderby' => 'date',
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post(); ?>
// loop your content here
<?php include(locate_template('templates/content.php')); ?>
<?php
}
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>