自定义帖子中的下拉过滤器

时间:2017-07-30 作者:D_P

这是我在自定义帖子类型中用于下拉筛选的代码段:

<?php        
        function blog_restrict_manage_posts() {
        global $typenow;
        $taxonomy = \'blog\'; // Change this
        if( $typenow != "page" && $typenow != "post" ){
            $filters = array($taxonomy);
            foreach ($filters as $tax_slug) {
                $tax_obj = get_taxonomy($tax_slug);
                $tax_name = $tax_obj->labels->name;
                $terms = get_terms($tax_slug);
                echo "<select name=\'$tax_slug\' id=\'$tax_slug\' class=\'postform\'>";
                echo "<option value=\'\'>Wszystkie $tax_name</option>";
                foreach ($terms as $term) { 
                    $label = (isset($_GET[$tax_slug])) ? $_GET[$tax_slug] : \'\'; // Fix
                    echo \'<option value=\'. $term->slug, $label == $term->slug ? \' selected="selected"\' : \'\',\'>\' . $term->name .\' (\' . $term->count .\')</option>\';
                }
                echo "</select>";
            }
        }
    }
    add_action( \'restrict_manage_posts\', \'blog_restrict_manage_posts\' );
?>
但有一个小问题——我有两个自定义帖子:“x”和“y”。我有一个下拉菜单过滤器。但“x”的过滤器在自定义帖子“y”管理页面中可见,反之亦然。因此,每个下拉列表都可以在每个自定义帖子管理页面中看到。。。

谢谢:)

1 个回复
最合适的回答,由SO网友:Cesar Henrique Damascena 整理而成

当使用这个钩子时,您的函数接收两个参数,其中onde是当前post\\u类型的slug;

<?php
function my_post_type_filter($post_type) {

  $post_slug = $post_type; 

  if( $post_slug == \'the_post_type_slug\') {
    // Do something
  }
}


add_action( \'restrict_manage_posts\', \'my_post_type_filter\' );

?>
要了解有关此挂钩的更多信息,请检查Docs.

结束