我在 WP 管理面板中添加了多个自定义列:
public function admin_column_content($column_name, $post_ID) {
global $post;
$progress = (new Question)->get_questions_progress();
if ($column_name == 'level_1') {
echo $progress['level_1']['progress'];
}
if ($column_name == 'level_2') {
echo $progress['level_2']['percentage'];
}
if ($column_name == 'level_3') {
echo $progress['level_3']['percentage'];
}
if ($column_name == 'address') {
echo get_field('street') . ' ' . get_field('house_number') . ', ' . get_field('city');
}
}
如您所见,第一个选项不是基于该页面中的(自定义)字段,而是由数据库中的多个数字生成的数字。
问题是我想让这些列也可以排序:
public function set_sortable_columns( $columns ) {
$columns['address'] = 'address';
$columns['level_1'] = 'level_1';
return $columns;
}
public function school_custom_orderby( $query ) {
if( ! is_admin() )
return;
$orderby = $query->get('orderby');
$progress = (new Question)->get_questions_progress();
if('address' == $orderby) {
$query->set('meta_key','street');
$query->set('orderby','meta_value');
} elseif ('level_1' == $orderby) {
$query->set('meta_key', '');
$query->set('orderby','meta_value_num');
}
}
地址列有效,因为我可以将 meta_key 值设置为 street,这是该自定义帖子类型中的 ACF 字段。但是如何使 level_1、level_2 和 level_3 可排序?他们在 CPT 中没有专门的字段。
提前致谢!
最好的祝福 乔里