这是我在自定义帖子类型中用于下拉筛选的代码段:
<?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”管理页面中可见,反之亦然。因此,每个下拉列表都可以在每个自定义帖子管理页面中看到。。。
谢谢:)
最合适的回答,由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.