将过滤器添加到Wordpress仪表板(而非帖子)

时间:2016-01-11 22:07:44

标签: php wordpress plugins filter dashboard

我希望过滤公司项目管理网站仪表板中的列表。我希望用户对其进行过滤,但目前为it can only sort by date。用户在悬停时显示,因此所有信息都在表格中,我只想添加一个搜索栏来过滤名称。这相对容易吗?我主要是前端所以我的PHP技能有点缺乏。正在使用的插件是Panorma projects

到目前为止我尝试过的所有插件都是为了过滤帖子,而且它们不会延续到全景页面。

1 个答案:

答案 0 :(得分:0)

这是用于在WP自定义帖子类型中添加自定义过滤器的代码。

只需根据您的要求更改代码。

在选择框的第一个功能中,按角色获取所有用户或特定用户。

在第二个函数中,使用作者ID

选择记录
 function wpse45436_admin_posts_filter_restrict_manage_posts(){
        $type = 'post';
        if (isset($_GET['post_type'])) {
            $type = $_GET['post_type'];
        }

        //only add filter to post type you want
        if ('POST_TYPE' == $type){
            //change this to the list of values you want to show
            //in 'label' => 'value' format
            $values = array(
                'label' => 'value', 
                'label1' => 'value1',
                'label2' => 'value2',
            );
            ?>
            <select name="ADMIN_FILTER_FIELD_VALUE">
            <option value=""><?php _e('Filter By ', 'wose45436'); ?></option>
            <?php
                $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
                foreach ($values as $label => $value) {
                    printf
                        (
                            '<option value="%s"%s>%s</option>',
                            $value,
                            $value == $current_v? ' selected="selected"':'',
                            $label
                        );
                    }
            ?>
            </select>
            <?php
        }
    }


    add_filter( 'parse_query', 'wpse45436_posts_filter' );
    /**
     * if submitted filter by post meta
     * 
     * make sure to change META_KEY to the actual meta key
     * and POST_TYPE to the name of your custom post type
     * @author Ohad Raz
     * @param  (wp_query object) $query
     * 
     * @return Void
     */
    function wpse45436_posts_filter( $query ){
        global $pagenow;
        $type = 'post';
        if (isset($_GET['post_type'])) {
            $type = $_GET['post_type'];
        }
        if ( 'POST_TYPE' == $type && is_admin() && $pagenow=='edit.php' && isset($_GET['ADMIN_FILTER_FIELD_VALUE']) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '') {
            $query->query_vars['author'] = ID of the user from $_GET;
        }
    }