Sabrina Canova

Realizzare un Custom Post Type da Zero (Parte 2)

Wordpress
Tutorial del: 10-12-2022
Custom Post Type Functions.php

Nella prima parte del tutorial abbiamo visto come creare un tipo di post personalizzato, nella seconda parte realizzeremo la tassonomia per creare nuove categorie da assegnare al custom post type “Libri”.

Le categorie ci permettono di organizzare i post per tipologia. Grazie all’utilizzo delle categorie è possibile visualizzare post appartenenti a una categoria specifica, nascondere determinate categorie dalla ricerca etc.

Aggiungete il seguente codice nel file functions.php del vostro tema, subito dopo il codice inserito precedentemente per la creazione del custom post type.



  • /* CREIAMO LA TASSONOMIA PER LE CATEGORIE DI LIBRI */
  • add_action('init', 'create_category_libri');
  • create_category_libri()
  • {
  • $labels = array(
  • 'name' => __('Categorie'),
  • 'singular_name' => __('Categoria'),
  • 'add_new_item' => __('Aggiungi Categoria'),
  • 'edit_item' => __('Modifica Categoria'),
  • 'new_item_name' => __('Nuova Categoria'),
  • 'all_items' => __('Tutte le Categorie'),
  • 'search_items' => __('Cerca Categoria'),
  • 'update_item' => __('Modifica Categoria'),
  • );
  • $args = array(
  • 'labels' => $labels,
  • 'hierarchical' => true,
  • 'query_var' => true,
  • 'hide_empty' => true,
  • 'rewrite' => array('slug' => 'categorie-libri', 'hierarchical' => true, 'with_front' => false),
  • 'fields' => 'all'
  • );
  • register_taxonomy('categorie-libri', 'libri', $args);
  • }
  • /* MOSTRIAMO LA TASSONOMIA PER LE CATEGORIE NEL BACK-END */
  • add_filter('manage_taxonomies_for_libri_columns', 'libri_types_columns');
  • function libri_types_columns($taxonomies)
  • {
  • $taxonomies[] = 'categorie-libri';
  • return $taxonomies;
  • }
  • Vediamo ora il risultato ottenuto nel back-end di WordPress:

    manage_taxonomies_for_(post_type)_columns mostra la colonna categorie nella tabella riepilogativa del custom post type “Libri”.

    Aggiungiamo due funzioni per mostrare un menu a discesa e filtrare i post per categorie.

    MOSTRIAMO IL MENU A DISCESA

    
    
  • /* VISUALIZZA UN MENU A DISCESA NEL BACK-END PER LE CATEGORIE E ATTIVA IL FILTRO */
  • add_action('restrict_manage_posts', 'sc_categories_filter_list');
  • function sc_categories_filter_list()
  • {
  • $screen = get_current_screen();
  • global $wp_query;
  • if ($screen->post_type == 'libri') {
  • wp_dropdown_categories(array(
  • 'show_option_all' => 'Categorie Libri',
  • 'taxonomy' => 'categorie-libri',
  • 'name' => 'categorie-libri',
  • 'orderby' => 'name',
  • 'selected' => (isset($wp_query->query['categorie-libri']) ? $wp_query->query['categorie-libri'] : ''),
  • 'hierarchical' => false,
  • 'depth' => 3,
  • 'show_count' => false,
  • 'hide_empty' => true,
  • ));
  • }
  • }
  • PERFEZIONIAMO IL FILTRO

    
      
  • add_filter('parse_query', 'sc_filtering');
  • function sc_filtering($query)
  • {
  • $q_vars = &$query->query_vars;
  • if (($q_vars['categorie-libri']) && is_numeric($q_vars['categorie-libri']))
  • $term = get_term_by('id', $q_vars['categorie-libri'], 'categorie-libri');
  • $q_vars['categorie-libri'] = $term->slug;
  • }
  • }
  • Vediamo il risultato:

    Nella terza parte del tutorial vedremo come creare la tassonomia per i tag del custom post type “Libri”.