【问题标题】:Wordpress custom query: 'orderby' => 'date' not working when using multiple post typesWordpress 自定义查询:'orderby' => 'date' 在使用多种帖子类型时不起作用
【发布时间】:2018-06-12 15:35:31
【问题描述】:

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

感谢任何提示我可以做些什么来实现所需的排序。

【问题讨论】:

    标签: php wordpress custom-post-type


    【解决方案1】:

    第一季度。你用的是什么模板文件?

    下面的查询成功地将 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();
            ?>
    

    【讨论】:

    • 我正在使用我自己编写的自定义模板文件。该模板中的循环与您的答案基本相似,只是我的内容提取直接发生在该文件中,而不是包含在包含的模板部分中。但是关于 orderby 和 post_type 细节没有区别,这就是没有按预期工作的地方。不过,感谢您花时间回答!
    【解决方案2】:

    我自己找到了解决方案:

    当我在定义自定义查询之前添加remove_all_filters('posts_orderby'); 时,它会起作用。显然,这会重置任何其他排序并允许 'orderby' =&gt; '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);
    
    [...]
    

    【讨论】:

    • 这对我有用,非常感谢您回来并发布您的解决方案。
    • 真的很奇怪——我的查询似乎没有任何额外的查询排序,但这有帮助
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2022-09-25
    • 1970-01-01
    相关资源
    最近更新 更多