Wordpress 自定义查询:'orderby' => 'date' 在使用多个 post 类型时不起作用
Wordpress custom query: 'orderby' => 'date' not working when using multiple post types
在 Wordpress 页面模板中,我设置了一个 WP 自定义查询,它查询名为 "recipe" 的自定义 post 类型和常规 post 类型,如下所示。这行得通,但其中的 'orderby => 'date'
行不通:该页面首先列出按日期排序的常规 post,然后是按日期排序的食谱。但我需要按日期将它们全部放在一起(即混合)。
这是我的自定义查询的定义:
$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...]
我很感激任何提示,我可以做些什么来实现所需的排序。
Q1。您使用的是什么模板文件?
下面的查询成功地将 2 个 post 类型按日期合并在一起。
<?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();
?>
我自己找到了解决方案:
当我在定义自定义查询之前添加 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);
[...]
在 Wordpress 页面模板中,我设置了一个 WP 自定义查询,它查询名为 "recipe" 的自定义 post 类型和常规 post 类型,如下所示。这行得通,但其中的 'orderby => 'date'
行不通:该页面首先列出按日期排序的常规 post,然后是按日期排序的食谱。但我需要按日期将它们全部放在一起(即混合)。
这是我的自定义查询的定义:
$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...]
我很感激任何提示,我可以做些什么来实现所需的排序。
Q1。您使用的是什么模板文件?
下面的查询成功地将 2 个 post 类型按日期合并在一起。
<?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();
?>
我自己找到了解决方案:
当我在定义自定义查询之前添加 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);
[...]