【问题标题】:sort posts based on meta key in a taxonomy archive page根据分类存档页面中的元键对帖子进行排序
【发布时间】:2017-08-27 04:37:27
【问题描述】:

我正在使用下面的代码根据我的元键 sub_seminars_0_start_date 对帖子进行排序。该代码运行良好,因为它从投资组合post_type 获取所有帖子,然后根据我的元键对它们进行排序。但是,当我通过分类查询时,它什么也不显示,一个带有页眉和页脚的空白页。

<?php 
                $args = array(
                'post_type'  => 'dt_portfolio',
                'post_status' => 'publish',
                'tax_query' => array(
            array(
            'taxonomy' => 'dt_portfolio_category',
            'field'    => 'slug',
            'terms'    => '',
        ),
    ),
                'meta_key'   => 'sub_seminars_0_start_date',
                'orderby'    => 'meta_value_num',
                'order'      => 'ASC',
            );

            $query = new WP_Query( $args ); ?>

如何对分类存档页面中的帖子进行排序?

function change_order_for_events( $query ) {
    //only show future events and events in the last 24hours
    $yesterday = date('Ymd');

    if ( $query->is_main_query() && (is_tax('dt_portfolio_category') || is_post_type_archive('dt_portfolio')) ) {
        $query->set( 'meta_key', 'sub_seminars_0_start_date' );
        $query->set( 'orderby', 'meta_value_num' );
        $query->set( 'order', 'ASC' );

        //Get events after 24 hours ago
        $query->set( 'meta_value', $yesterday );
        $query->set( 'meta_compare', '>' );

       //Get events before now
       //$query->set( 'meta_value', current_time('timestamp') );
       //$query->set( 'meta_compare', '<' );
    }

}

add_action( 'pre_get_posts', 'change_order_for_events' );

function.php 中的这段代码将根据特定的元键值对您的帖子进行排序。

sub_seminars_0_start_date

我已经创建了一个自定义分类法Seminar_Venues,但是即使在调整参数之后,上面的代码也无法正常工作。你能看看吗

【问题讨论】:

    标签: php wordpress sorting taxonomy


    【解决方案1】:
    function pre_get_posts_hook($wp_query) {
    
        if( is_admin() ) {
    
            return $wp_query;
    
        }
    
        if ($wp_query->is_main_query() && ( is_category() || is_archive() ))
        {
            $wp_query->set( 'orderby', 'meta_value' );
            $wp_query->set( 'meta_key', 'sub_seminars_0_start_date' );
            $wp_query->set( 'order', 'ASC' );
            return $wp_query;
        }
    }
    
    add_filter('pre_get_posts', 'pre_get_posts_hook' );
    

    这对我来说可以根据自定义字段配对键对帖子进行排序

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 1970-01-01
      • 2020-01-30
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      相关资源
      最近更新 更多