restrict_manage_posts não funciona em 3.3.1

Eu notei que meus filtros personalizados de taxonomia já não funcionam no administrador 3.3.1 de acordo com esses methods: Adicionando um filtro de taxonomia à lista de administradores para um tipo de postagem personalizado?

Eu também descobri que, para filtrar uma taxonomia, a seqüência de consulta exige tanto a &taxonomy=whatever e o &term=something a ser passado. Alguém tem alguma experiência nisso e soluções para oferecer?

Aqui está um código da questão como um exemplo:

 add_action('restrict_manage_posts','restrict_listings_by_business'); function restrict_listings_by_business() { global $typenow; global $wp_query; if ($typenow=='listing') { $taxonomy = 'business'; $business_taxonomy = get_taxonomy($taxonomy); wp_dropdown_categories(array( 'show_option_all' => __("Show All {$business_taxonomy->label}"), 'taxonomy' => $taxonomy, 'name' => 'business', 'orderby' => 'name', 'selected' => $wp_query->query['term'], 'hierarchical' => true, 'depth' => 3, 'show_count' => true, // Show # listings in parens 'hide_empty' => true, // Don't show businesses w/o listings )); } } 

e

 add_filter('parse_query','convert_business_id_to_taxonomy_term_in_query'); function convert_business_id_to_taxonomy_term_in_query($query) { global $pagenow; $qv = &$query->query_vars; if ($pagenow=='edit.php' && isset($qv['taxonomy']) && $qv['taxonomy']=='business' && isset($qv['term']) && is_numeric($qv['term'])) { $term = get_term_by('id',$qv['term'],'business'); $qv['term'] = $term->slug; } } 

Solutions Collecting From Web of "restrict_manage_posts não funciona em 3.3.1"

Há algumas coisas erradas com seu código …

  1. Ao filtrar não é um term que dá o ID do termo, mas business (neste caso), pois este é o nome que você forneceu para o menu suspenso. Substitua todas as instâncias de term por business
  2. A taxonomia não é definida ao filtrar. Remova essa verificação da function parse_query .

O seguinte funcionou para mim (exceto eu mudei de ‘listview’ para ‘post’) …

 add_action('restrict_manage_posts','restrict_listings_by_business'); function restrict_listings_by_business() { global $typenow; global $wp_query; if ($typenow=='post') { $taxonomy = 'business'; $term = isset($wp_query->query['business']) ? $wp_query->query['business'] :''; $business_taxonomy = get_taxonomy($taxonomy); wp_dropdown_categories(array( 'show_option_all' => __("Show All"), 'taxonomy' => $taxonomy, 'name' => 'business', 'orderby' => 'name', 'selected' => $term, 'hierarchical' => true, 'depth' => 3, 'show_count' => true, // Show # listings in parens 'hide_empty' => true, // Don't show businesses w/o listings )); } } add_filter('parse_query','convert_business_id_to_taxonomy_term_in_query'); function convert_business_id_to_taxonomy_term_in_query($query) { global $pagenow; $qv =& $query->query_vars; if ($pagenow=='edit.php' && isset($qv['business']) && is_numeric($qv['business'])) { $term = get_term_by('id',$qv['business'],'business'); $qv['business'] = ($term ? $term->slug : ''); } }