自定义帖子类型中具有自定义分类的可排序列

时间:2017-07-27 作者:D_P

我已经在自定义帖子类型中创建了自定义列。此列显示自定义分类法。代码如下:

     function custom_MY_CUSTOM_POST_TYPE_column( $column, $post_id ) {
        switch ( $column ) {

            case \'MY_CUSTOM_COLUMN\';
                $terms = get_the_term_list( $post_id , \'MY_CUSTOM_COLUMN\' , \'\' , \',\' , \'\' );
                if ( is_string( $terms ) )
                    echo $terms;
                else
                    _e( \'-\', \'your_text_domain\' );
                break;    
        }
    }
现在我需要将此列按字母顺序排序,因此我创建了以下代码:

// Register the column as sortable
function x_column_register_sortable( $columns ) {
    $columns[\'MY_CUSTOM_COLUMN\'] = \'x\';

    return $columns;
}
add_filter( \'manage_edit-MY_CUSTOM_POST_TYPE_sortable_columns\', \'x_column_register_sortable\' );
但这不起作用。如何使此列正常工作?

1 个回复
最合适的回答,由SO网友:WPExplorer 整理而成

您试图按“x”排序,但WordPress不知道这是什么。因此,您需要按照WP理解的“标题”进行排序:

$columns[\'MY_CUSTOM_COLUMN\'] = \'title\';
否则,您需要“x”来实际执行类似操作:

function my_custom_query_sort( $query ) {
    if ( ! is_admin() ) {
        return;
    }

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

    if ( \'x\' == $orderby ) {
        $query->set( \'orderby\', \'SOMETHING CUSTOM\' );
    }

}
add_action( \'pre_get_posts\', \'my_custom_query_sort\' );
但这不是唯一的问题。。。您提到该列是一个自定义分类法。WordPress中没有任何按分类法对帖子进行排序的核心功能。更不用说每个职位都可以分配多个术语。

结束

相关推荐