如何按日期对自定义字段管理列进行排序

时间:2019-04-30 作者:Connor

我有一个WordPress网站,上面有一个名为“Courses”的自定义帖子类型。

在WordPress dashboard页面上列出了每门课程,我添加了一个新的列,显示一个自定义字段,这是一个日期,称为“在线开始”。联机开始日期是手动指定的日期,与帖子的发布日期无关。

我希望能够按照“在线开始”列中现在显示的日期对课程列表进行排序。

我添加了排序功能,如add_sortable_date_column 函数,但日期排序不正确。我相信这是因为我需要格式化$onlinestart 变量作为日期,我不太确定该怎么做。

任何帮助都将不胜感激。

//add custom field column to post list
function add_admin_course_column_title( $columns ) {
  $columns[\'online_start\'] = __( \'Online Start\' );
  return $columns;
}
add_filter( \'manage_courses_posts_columns\', \'add_admin_course_column_title\' );

function add_admin_course_column( $column, $post_id ) {
    if ( \'online_start\' === $column ) {
        $onlinestart = get_post_meta( $post_id, \'online_start\', true );

        if ( ! $onlinestart ) {
                _e( \'n/a\' );
        } 
        else {
            echo $onlinestart;
        }
    }
}
add_action( \'manage_courses_posts_custom_column\', \'add_admin_course_column\', 10, 2);

function add_sortable_date_column( $columns ) {
  $columns[\'online_start\'] = \'online_start\';
  return $columns;
}
add_filter( \'manage_edit-courses_sortable_columns\', \'add_sortable_date_column\');

2 个回复
SO网友:anton

功能add_sortable_date_column 仅将列注册为可排序
再添加一个函数,告诉wordpress如何对列进行排序。

function courses_columns_orderby( $query ) {

    if( ! is_admin() )
        return;

    $orderby = $query->get( \'orderby\');

    switch( $orderby ){
        case \'online_start\': 
            $query->set(\'meta_key\',\'online_start\');
            $query->set(\'orderby\',\'meta_value\');
            break;
        default: break;
    }

}

add_action( \'pre_get_posts\', \'courses_columns_orderby\' );

SO网友:Harsh
function post_types_admin_order( $wp_query ) {
  if (is_admin()) {

   $post_type = $wp_query->query[\'post_type\'];

  if ( $post_type == \'your post type name\') { //like post 

    $wp_query->set(\'orderby\', \'column table header tag id\'); //like comments

    $wp_query->set(\'order\', \'DESC\'); //change order
   }

  }

 }
 add_filter(\'pre_get_posts\', \'post_types_admin_order\');

相关推荐

Sort posts in a specific way

我目前有6个职位属于“服务”类别。每个服务都有\\u内容和1-2个文档(小册子和/或T&C以及外部表单)现在,假设这6篇文章的ID为1,2,3,4,5,6,但我希望它是2,5,3,1,4,6。这可能吗?如果是,我将如何实现它?