Filtrar tipo de postagem personalizado no administrador

Eu tenho um tipo de postagem personalizado que possui meta personalizada que eu quero ser capaz de filtrar na página Admin. Muito parecido com os links “All | Published | Drafts | and Trash” localizados acima da lista de publicações. Não consigo encontrar um gancho para ligar. Existe uma?

Esta pergunta não é exatamente o que eu estou perguntando. Eu preferiria não ter o menu suspenso do filtro, mas sim um link como …

All | Published | Drafts | Trash 

… no topo do editor.

Solutions Collecting From Web of "Filtrar tipo de postagem personalizado no administrador"

Assim como em Adicionar um filtro de taxonomia à lista de administradores para um tipo de postagem personalizado? o filtro parse_query pode ser usado, mas aqui estou usando posts_where .


A linha All | Published | ... All | Published | ... All | Published | ... é controlado por views_edit-{$post_type} ea matriz $views contém cada item que é uma marca de âncora simples.

Primeiro, inserimos alguns links – um separador e um filtro Meta:

 add_filter( 'views_edit-portfolio', 'meta_views_wpse_94630', 10, 1 ); function meta_views_wpse_94630( $views ) { $views['separator'] = '           '; $views['metakey'] = 'Meta Key'; return $views; } 

O link contém meta_data=allorany (o nome do campo personalizado), que será usado para filtrar por meta-chave.

insira a descrição da imagem aqui


E, em seguida, filtre quando necessário:

 add_action( 'load-edit.php', 'load_custom_filter_wpse_94630' ); function load_custom_filter_wpse_94630() { global $typenow; // Adjust the Post Type if( 'portfolio' != $typenow ) return; add_filter( 'posts_where' , 'posts_where_wpse_94630' ); } function posts_where_wpse_94630( $where ) { global $wpdb; if ( isset( $_GET[ 'meta_data' ] ) && !empty( $_GET[ 'meta_data' ] ) ) { $meta = esc_sql( $_GET['meta_data'] ); $where .= " AND ID IN (SELECT post_id FROM $wpdb->postmeta WHERE meta_key='$meta' )"; } return $where; }