我有一个自定义的帖子类型,叫做speakers
, 其中,帖子标题是演讲者的名字。我用以下代码创建了它:
add_action( \'init\', \'create_post_type\' );
function create_post_type() {
register_post_type( \'speaker\',
array(
\'labels\' => array(
\'name\' => __( \'Speakers\' ),
\'singular_name\' => __( \'Speaker\' )
),
\'public\' => true,
\'has_archive\' => true,
\'supports\' => array(\'title\',\'editor\',\'thumbnail\'),
)
);
}
在@birgire的帮助下,我能够在我的wp\\U查询中成功地对这些进行排序,方法是将其添加到
functions.php
:
function posts_orderby_lastname ($orderby_statement)
{
$orderby_statement = "RIGHT(post_title, LOCATE(\' \', REVERSE(post_title)) - 1) ASC";
return $orderby_statement;
}
然后在我的查询之前添加过滤器。
我的问题是,如何在后端列中按照帖子列表中的姓氏对帖子进行排序。我被告知我需要使用pre_get_posts
钩
我试过这个:
function set_custom_post_types_admin_order($wp_query) {
if (is_admin()) {
// Get the post type from the query
$post_type = $wp_query->query[\'post_type\'];
if ( $post_type == \'speaker\') {
if (!isset($_GET[\'orderby\'])) {
// \'orderby\' value can be any column name
$wp_query->set(\'orderby\', \'title\');
// \'order\' value can be ASC or DESC
$wp_query->set(\'order\', \'ASC\');
}
}
}
}
add_filter(\'pre_get_posts\', \'set_custom_post_types_admin_order\');
它按帖子类型而不是创建日期排序,但我不知道如何按姓氏排序。。。