Wordpress自定义查询:'orderby'=>使用多种帖子类型时,“日期”不起作用

时间:2018-01-02 23:32:47

标签: php wordpress custom-post-type

在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...]

我很感激任何暗示我能做些什么来达到预期的顺序。

2 个答案:

答案 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();
        ?>