Wordpress 可排序的自定义管理列

时间:2021-01-25 09:22:04

标签: php wordpress

我在 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 中没有专门的字段。

提前致谢!

最好的祝福 乔里

0 个答案:

没有答案
相关问题