Filtro di ricerca Custom Post Type WordPress

Filtro di ricerca Custom Post Type WordPress

Non so se vi sia mai capitato di dover attivare dei custom post type in uno dei vostri sito wordpress. In pratica wordpress permette di creare una nuova “area” di caricamento articoli/post indipendenti da articoli e pagine. Un esempio di custom post type per esempio sono gli eventi (quando vedere anche la gestione di essi nel menu a lato). Di recente mi è capitato di dover personalizzare un custom post type in amministrazione perchè volevo poter filtrare come per gli articoli i vari post per categoria. Cercando online ho quindi trovato questo codice per attivare l’opzione filtro anche per il custom type.

PREMESSA: se attivate voi stessi il custom post type potreste trovare attivo di default il filtro di ricerca per “data di inserimento” ed il pulsante per avviare la ricerca. Se invece volete aggiungere questa opzione ad un custom post type già configurato (es. Event Manager) il plugin installato potrebbe aver volutamente aver disattivato questa opzione.

Nel mio caso io volevo proprio attivare la ricerca di un plugin (proprio Tribe Event Manager) che lo aveva nascosto.

Ecco cosa ho fatto per riattivare il tutto:

  1. Nel CSS del plugin ho cercato la stringa che nascondeva il pulsante “filtro”
  2. Ho inserito il secuenge codice nel functioncs.php del tema:


//disattivo filtro per data di inserimento
add_filter( 'disable_months_dropdown' , 'custom_disable_months_dropdown' , 10 , 2 );
function custom_disable_months_dropdown( $false , $post_type ) {
$disable_months_dropdown = $false;
$disable_post_types = array( 'tribe_events');
if( in_array( $post_type , $disable_post_types ) ) {
$disable_months_dropdown = true;
}
return $disable_months_dropdown;
}
//attivazione filtro per categoria negli eventi
add_action( 'restrict_manage_posts', 'my_filter_list' );
function my_filter_list() {
$screen = get_current_screen();
global $wp_query;
if ( $screen->post_type == 'tribe_events' ) {
wp_dropdown_categories( array(
'show_option_all' => 'Categorie Eventi',
'taxonomy' => 'tribe_events_cat',
'name' => 'tribe_events_cat',
'orderby' => 'name',
'selected' => ( isset( $wp_query->query['tribe_events_cat'] ) ? $wp_query->query['tribe_events_cat'] : '' ),
'hierarchical' => false,
'depth' => 3,
'show_count' => false,
'hide_empty' => true,
) );
}
}

add_filter( 'parse_query','perform_filtering' );
function perform_filtering( $query ) {
$qv = &$query->query_vars;
if ( ( $qv['tribe_events_cat'] ) && is_numeric( $qv['tribe_events_cat'] ) ) {
$term = get_term_by( 'id', $qv['tribe_events_cat'], 'tribe_events_cat' );
$qv['tribe_events_cat'] = $term->slug;
}
}

 

Per maggior informazioni leggetevi anche questo articolo da cui ho preso spunto:
http://wpadminuicustomize.com/blog/how-to-customize-the-filter-search-on-the-posts-listsedit-php/

Francesca

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

©2021 AGANIS WEB SOFTWARE di Francesca Roccabruna P.IVA TRENTO 02183500228 - N.REA 205930 La Web Agency per la realizzazione del tuo sito web
Privacy Policy