【问题标题】:Adding filter to Wordpress dashboard (not posts)将过滤器添加到 Wordpress 仪表板(不是帖子)
【发布时间】:2016-04-16 09:08:50
【问题描述】:

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

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

【问题讨论】:

标签: php wordpress plugins filter dashboard


【解决方案1】:

这是在 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;
        }
    }

【讨论】:

  • 感谢这有帮助。如果 users 列中的值是用户数组怎么办?
  • 您可以通过 wp 中的循环获取所有用户 .. 在循环内传递数组中的所有用户 ID 和用户名 .. 然后在上述之外的下一个 foreach 循环(来自上面创建的数组) WP循环创建选择框的选项并在选项中传递用户ID和名称..
  • 你能告诉我 $query->query_vars['author'] = 来自 $_GET 的用户 ID 是什么吗?线看起来像一个循环?
  • $query->query_vars['author'] = $_GET['selected_user'];上面创建的选择框的名称应该是 selected_user
  • 你只需要设置作者参数而不是整个循环..它会修改循环添加作者参数..
猜你喜欢
  • 1970-01-01
  • 2018-12-14
  • 2012-03-07
  • 2015-01-11
  • 1970-01-01
  • 2012-01-22
  • 2021-04-08
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多