为什么我的自定义用户视图列不按A-Z排序



我在WordPress中的Users表中添加了一个自定义列,名为安全答案。我想让这个专栏可以排序,所以我最终得到了这样的代码:

function trucklesoft_my_sortable_cake_column( $columns ) {
$columns['security_answer'] = 'Security Answer';
return $columns;
}
add_filter( 'manage_users_sortable_columns', 'trucklesoft_my_sortable_cake_column' );

我现在可以点击列标题,它似乎可以进行某种排序,但它不起作用。

这是一个基于文本的列,列中的一些项目是空的,但我希望它按a-Z时尚或Z-a时尚排序,但它不会。

如何实现排序逻辑?

您的代码只将列注册为可排序列,因此管理表标题包含必要的标记。

但是没有实现排序逻辑。你需要这样的东西:

add_action( 'pre_get_users', 'trucklesoft_security_orderby' );
function trucklesoft_security_orderby( $query ) {
if( ! is_admin() || ! current_user_can( 'edit_user' ) )
return;
$orderby = $query->get( 'orderby');
if( 'security_answer' == $orderby ) {
$query->set('meta_key','security_answer');
$query->set('orderby','meta_value');
}
}

我做WP已经有一段时间了,所以你可能需要调整一下代码。我假设你的"security_answer"确实是一个自定义的postmeta。

最新更新