Tipi di post personalizzati di WordPress tassonomie, colonne di amministrazione e filtri

Prima di immergerti in questo tutorial, consulta il mio primo tutorial sui Tipi di post personalizzati, in cui ho illustrato alcuni aspetti importanti dei CPT (Tipi di post personalizzati). In questo tutorial esploreremo di più su questa meravigliosa funzione di WordPress.

Questo tutorial spiega come creare tassonomie personalizzate, colonne di amministrazione, filtri di tassonomia e una pagina di archivio per il CPT. Quindi iniziamo.


Tassonomia personalizzata per tipi di messaggi personalizzati

Le tassonomie sono un ottimo modo per raggruppare le cose e aiutarci a cercare post appartenenti a un gruppo specifico. In WordPress usiamo generalmente categorie e tag come tassonomie. I passaggi indicati di seguito spiegano come creare tassonomie personalizzate per il CPT.

Passaggio 1: registrare la funzione personalizzata

Apri il tuo file di plugin, nel nostro caso Movie-Reviews.php e aggiungere il seguente codice per registrare la funzione personalizzata.

add_action ('init', 'create_my_taxonomies', 0);

Passaggio 2: implementazione della funzione personalizzata e registrazione della tassonomia personalizzata

function create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews', array ('labels' => array ('name' => 'Movie Genre', 'add_new_item' => 'Aggiungi nuovo genere film', 'new_item_name' = > "New Movie Type Genre"), 'show_ui' => true, 'show_tagcloud' => false, 'hierarchical' => true)); 

Qui il register_taxonomy funzione fa tutto il duro lavoro di creare una tassonomia personalizzata (nel nostro caso una categoria) con il nome 'movie_reviews_movie_genre'per il tipo di messaggio personalizzato'movie_reviews'. Le etichette definiscono le diverse stringhe utilizzate nella sezione di amministrazione della tassonomia.

  • 'show_ui' => true è usato per rendere visibile l'editor di tassonomia nella dashboard.
  • 'show_tagcloud' => falso decodificare se il tag cloud dovrebbe essere visibile. Nel nostro caso è disabilitato.
  • 'hierarchical' => true decodifica il formato della tassonomia personalizzata.

Nota: 'hierarchical' => false converte le categorie in tag.

Passaggio 3: visualizzazione delle Tassonomie personalizzate

Dopo aver salvato il file Movie-Reviews.php file, apri il tuo file modello personalizzato, nel nostro caso single-movie_reviews.php e aggiungi il seguente evidenziato codice per rendere le categorie visibili nei nostri post.

 
'movie_reviews',); $ loop = new WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>
>
Titolo:
Direttore:
Genere: ID, 'movie_reviews_movie_genre', ");?>
Valutazione: '; else echo ''; ?>

Passaggio 4: il risultato

Qui abbiamo aggiunto una tassonomia personalizzata "Genere film" nelle recensioni dei nostri film CPT. Ora saremo in grado di aggiungere nuove categorie dal pannello di amministrazione e assegnare ciascuna di esse al nostro CPT.


Visualizzazione di colonne aggiuntive

Nella pagina di elenco CPT dell'amministratore di WordPress, per impostazione predefinita sono presenti due colonne: Data e Commenti, tramite le quali è possibile ordinare gli articoli CPT. Per aggiungere colonne e ordinamenti aggiuntivi, segui i passaggi indicati di seguito.

Passaggio 1: funzione di registrazione

Apri il file del plugin Movie-Reviews.php e aggiungere la seguente riga di codice per registrare una funzione da chiamare quando viene preparata la pagina di elenco Recensioni di film.

add_filter ('manage_edit-movie_reviews_columns', 'my_columns');

Qui abbiamo usato il filtro variabile manage_edit- (Custom_Post_Type) _columns, che passa l'elenco di colonne del CPT come argomento della funzione.

Passaggio 2: implementazione della funzione

function my_columns ($ columns) $ columns ['movie_reviews_director'] = 'Director'; $ columns ['movie_reviews_rating'] = 'Valutazione'; unset ($ columns ['comments']); restituire $ colonne; 

Qui abbiamo aggiunto due colonne: Direttore e Valutazione nel pannello di amministrazione del CPT e ha eliminato anche la colonna Commenti dall'elenco.

Passaggio 3: compilazione delle colonne

Registra una funzione per popolare le colonne.

add_action ('manage_posts_custom_column', 'populate_columns');

Passaggio 4: implementazione

function populate_columns ($ column) if ('movie_reviews_director' == $ colonna) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); echo $ movie_director;  elseif ('movie_reviews_rating' == $ column) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. ' stelle'; 

Qui poiché la funzione viene eseguita quando una delle colonne CPT viene sottoposta a rendering, controlla le colonne attualmente richieste prima di farle eco. Abbiamo usato il get_the_ID () funzione per recuperare l'indice della riga corrente e quindi a sua volta aver usato il get_post_meta per recuperare i dati nella colonna.

Passaggio 5: registrare le colonne come ordinabili

Ora registriamo una funzione da chiamare quando WordPress identifica le colonne ordinabili in CPT.

add_filter ('manage_edit-movie_reviews_sortable_columns', 'sort_me');

Passaggio 6: implementazione

function sort_me ($ columns) $ columns ['movie_reviews_director'] = 'movie_reviews_director'; $ columns ['movie_reviews_rating'] = 'movie_reviews_rating'; restituire $ colonne; 

Questa funzione identifica due colonne per renderle ordinabili e quindi restituisce l'array. Ma il nostro lavoro non è ancora finito.

Passaggio 7: ordina per campo personalizzato

add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); function column_orderby ($ vars) if (! is_admin ()) restituisce $ vars; if (isset ($ vars ['orderby']) && 'movie_reviews_director' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_director', 'orderby' = > 'meta_value'));  elseif (isset ($ vars ['orderby']) && 'movie_reviews_rating' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_rating', 'orderby' => 'meta_value_num'));  return $ vars; 

La funzione precedente è associata al filtro di richiesta e aggiunge elementi all'array di query, in base alle variabili nell'URL della query. In realtà WordPress non sa come ordinare dai campi "Movie Director" o "Movie Rating", quindi dobbiamo insegnare a WordPress come farlo attraverso questa funzione.

Abbiamo aggiunto con successo due colonne ordinabili nella sezione di amministrazione.


Creazione di filtri con tassonomia personalizzata

Qui vedremo come le tassonomie personalizzate (in questo caso, le categorie) possono essere utilizzate come filtro aggiuntivo nella pagina di elenco CPT nell'amministratore di WordPress, in modo che gli amministratori possano visualizzare elementi CPT appartenenti a una categoria specifica.

Passaggio 1: registrare la funzione

Aprire il file del plugin e aggiungere il seguente codice per registrare una funzione da chiamare quando WordPress si sta preparando a visualizzare l'elenco a discesa dei filtri.

add_action ('restrict_manage_posts', 'my_filter_list');

Passaggio 2: implementazione della funzione

function my_filter_list () $ screen = get_current_screen (); globale $ wp_query; if ($ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Mostra tutti i generi di film', 'tassonomia' => 'film_reviews_movie_genre', 'name' => 'movie_reviews_movie_genre', 'orderby '=>' name ',' selected '=> (isset ($ wp_query-> query [' movie_reviews_movie_genre '])? $ wp_query-> query [' movie_reviews_movie_genre ']: "),' hierarchical '=> false,' profondità '=> 3,' show_count '=> false,' hide_empty '=> true,));

Qui abbiamo utilizzato una variabile globale per conoscere il tipo di post che viene visualizzato e utilizzato anche una variabile di query post per verificare se esiste già un filtro esistente e di conseguenza impostare il filtro. Il wp_dropdown_categories la funzione viene utilizzata per visualizzare tutte le tassonomie registrate con i generi di film. Il 'ordinato da','show_count','hide_empty','profondità'ecc. sono argomenti diversi che specificano l'ordinamento, mostrano gli elementi contano su ogni categoria, nascondono categorie non associate, determinano la profondità massima da mostrare rispettivamente per le categorie gerarchiche.

Passaggio 3: Visualizza risultati filtrati

Ora, dopo aver preparato l'elenco a discesa dei filtri, scriveremo un codice per visualizzare i risultati filtrati. Registrare una funzione da chiamare quando viene preparata la query di visualizzazione post.

add_filter ('parse_query', 'perform_filtering');

Passaggio 4: implementazione della funzione di visualizzazione

function perform_filtering ($ query) $ qv = & $ query-> query_vars; if (($ qv ['movie_reviews_movie_genre']) && is_numeric ($ qv ['movie_reviews_movie_genre'])) $ term = get_term_by ('id', $ qv ['film_reviews_movie_genre'], 'movie_reviews_movie_genre'); $ qv ['movie_reviews_movie_genre'] = $ term-> slug; 

Il perform_filtering la funzione riceve l'oggetto di query post di WordPress corrente e quindi inizia ottenendo un puntatore alle variabili di query memorizzate all'interno dell'oggetto query. Quindi verifica se un genere film fa parte delle variabili di query e quindi esegue la query.

Ora sarai in grado di utilizzare il filtro per visualizzare i film in base ai loro generi.


Ultimo ma non meno importante: creare una pagina di archivio

Poiché abbiamo creato un modello personalizzato per il nostro CPT, possiamo anche creare una pagina di archivio personalizzata che sostituisce il modello di archivio predefinito.

Passaggio 1: aggiunta di un fallback al modello di archivio

Apri il file del plugin Movie-Reviews.php e aggiungi il codice evidenziato nel include_template_function funzione.

function include_template_function ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // verifica se il file esiste prima nel tema, // altrimenti serve il file dal plugin if ($ theme_file = locate_template (array ('single-movie_reviews.php'))) $ template_path = $ tema_file;  else $ template_path = plugin_dir_path (__FILE__). '/Single-movie_reviews.php';  elseif (is_archive ()) if ($ theme_file = locate_template (array ('archive-movie_reviews.php'))) $ template_path = $ tema_file;  else $ template_path = plugin_dir_path (__FILE__). '/Archive-movie_reviews.php';  restituisce $ template_path; 

WordPress cerca nella directory del tema un file modello di archivio prima di utilizzare quello predefinito. Questa funzione controlla se l'utente ha fornito un modello di archivio nella directory dei temi, altrimenti cerca il file nella cartella del plugin.

Passaggio 2: creare il modello di archivio

Salva e chiudi il file del plugin e poi crea un nuovo file chiamato archive-movie_reviews.php e aggiungere il seguente codice in esso.

 

Recensioni di film

Titolo Direttore
">
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>


Qui abbiamo usato il ciclo per scorrere le voci del post e quindi visualizzarle usando un layout di tabella. Abbiamo anche definito un menu di navigazione se ci sono più voci del numero massimo configurato in Impostazioni di WordPress. I menu di navigazione sono visualizzati usando next_post_links e previous_post_links funzioni.

Abbiamo usato il globale WP_Query oggetto contenente i dati sulla query attualmente eseguita, per rendere il contenuto della pagina. Il get_post_meta la funzione è stata utilizzata per recuperare i dati di campo personalizzati.

Passaggio 3: il risultato

Salvare il file e controllare la pagina di archivio per l'elenco dell'archivio Recensioni film.


Qui arriviamo alla fine di questo tutorial. Spero che tu sia stato in grado di cogliere l'importanza dei Tipi di post personalizzati. C'è altro da esplorare, basta giocarci.

Grazie per la lettura e sentiti libero di dare il tuo feedback.