Vi sarà capitato più volte, magari sviluppando un tema per un cliente, di avere la necessità di aggiungere un post type a quelli predefiniti (post, page, ecc…).

Esistono vari plugin in grado di svolgere la suddetta operazione, ma anche un modo molto semplice da codice, che ci permetterà di avere il nostro post type personalizzato, senza installare plugin, di conseguenza senza appesantire il caricamento delle pagine del nostro blog/sito.

Per definire il nostro nuovo tipo di articolo personalizzato ricorreremo all’utilizzo della funzione register_post_type();.

Immaginiamo di dover definire un nuovo tipo di post nei quali scriveremo recensioni di film.

Apriamo il file functions.php del nostro tema ed aggiungiamo le seguenti  righe:

 

class cpt_film {
	function cpt_film() {
		// Inizializzazione della funzione
		add_action( 'init', array( $this, 'create_post_type' ) );
	}
	// Registrazione del Post Type
	function create_post_type() {
		// Etichette del Post Type
		$labels = array(
			// Nome plurale del post type
			'name' => _x( 'Film', 'Post Type General Name', 'domain-name' ),
			// Nome singolare del post type
			'singular_name' => _x( 'Film', 'Post Type Singular Name', 'domain-name' ),
			// Testo per pulsante Aggiungi
			'add_new' => __( 'Aggiungi Nuovo Film', 'domain-name' ),
			// Testo per pulsante Tutti gli articoli
			'all_items' => __( 'Tutti i film', 'domain-name' ),
			// Testo per pulsante Aggiungi nuovo articolo
			'add_new_item' => __( 'Aggiungi Nuovo Film', 'domain-name' ),
			// Testo per pulsante Modifica
			'edit_item' => __( 'Modifica Film', 'domain-name' ),
			// Testo per pulsante Nuovo
			'new_item' => __( 'Nuovo Film', 'domain-name' ),
			// Testo per pulsante Visualizza
			'view_item' => __( 'Visualizza Film', 'domain-name' ),
			// Testo per pulsante Cerca articoli
			'search_items' => __( 'Cerca Film', 'domain-name' ),
			// Testo per nessun articolo trovato
			'not_found' => __( 'Nessun film trovato', 'domain-name' ),
			// Testo per nessun articolo trovato nel cestino
			'not_found_in_trash' => __( 'Nessun film trovato nel cestino', 'domain-name' ),
			// Testo per articolo genitore
			'parent_item_colon' => __( 'Film genitore:', 'domain-name' ),
			// Testo per Menù
			'menu_name' => __( 'Film', 'domain-name' )
		);
		$args = array(
			'labels' => $labels,
			// Descrizione
			'description' => 'Gli articoli visibili in Film',
			// Rende visibile o meno da front-end il post type
			'public' => true,
			// Esclude o meno il post type dai risultati di ricerca
			'exclude_from_search' => true,
			// Rende richiamabile o meno da front-end il post type tramite una query
			'publicly_queryable' => true,
			// Rende disponibile l'interfaccia grafica del post type da back-end
			'show_ui' => true,
			// Rende disponibile o meno il post type per il menù di navigazione
			'show_in_nav_menus' => true,
			// Definisce dove sarà disponibile l'interfaccia grafica del post type nel menù di amministrazione
			'show_in_menu' => true,
			// Rende disponibile o meno il post type per l'admin bar di wordpress
			'show_in_admin_bar' => true,
			// La posizione nel menù
			'menu_position' => 20,
			// L'icona del post type nel menù
			'menu_icon' => 'dashicons-video-alt',
			// I permessi che servono per editare il post type
			'capability_type' => 'post',
			// Definisce se il post type è gerarchico o meno
			'hierarchical' => true,
			// I meta box che il post type supporta nell'interfaccia di editing
			'supports' => array( 'title', 'editor', 'page-attributes' ),
			// Le tassonomie supportate dal post type
			'taxonomies' => array( 'category' ),
			// Definisce se il post type ha o meno un archivio
			'has_archive' => true,
			// Imposta lo slug del post type
			'rewrite' => array( 'slug' => 'film', 'with_front' => false ),
		);
                // Registra il Custom Post Type
		register_post_type( 'cpt_film', $args );
	}
}
// Istanzia l'oggetto che crea il Custom Post Type
$film = new cpt_film();

 

A questo punto il nostro Custom Post Type sarà disponibile nella back-end della nostra installazione di WordPress.

 

cpt-screenshot

 

Nel seguente articolo Come creare una Custom Taxonomy chiamata Genere da associare al Custom Post Type Film creato ora.

Condividi: Creare Custom Post Type in WordPress

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

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