Skip to main content

Cosa sono i custom post type e come crearli

Per ottenere le funzionalità di base di un tipo di post personalizzato funzionante, non abbiamo quasi alcun codice da inserire. Prima di iniziare, hai almeno bisogno di alcune cose: un nome, due etichette e definire se il tuo tipo di post sarà pubblico.

4 minuti di lettura

Per ottenere le funzionalità di base di un tipo di post personalizzato funzionante, non abbiamo quasi alcun codice da inserire. Prima di iniziare, hai almeno bisogno di alcune cose: un nome, due etichette e definire se il tuo tipo di post sarà pubblico (probabilmente lo vorrai).

Quando crei tipi di post personalizzati, devi aggiungere il tuo codice a un file plug-in. Sebbene sia possibile farlo tramite il functions.php file in un tema, non è corretto farlo.

Impostiamo il nostro tipo di post Super Post.

add_action( 'init', 'create_my_post_types' );
function create_my_post_types() {
	register_post_type( 'super_post',
		array(
			'labels' => array(
				'name' => __( 'Super Post' ),
				'singular_name' => __( 'Super Post' )
			),
			'public' => true,
		)
	);
}

Noterai che non c’è molto da fare lì. Abbiamo aggiunto due parametri: un nome del tipo di post e un array di argomenti. Tutti i possibili argomenti sono dettagliati nella sezione successiva.

Se tutto ciò che vorrai fare è qualcosa di semplice come avere un campo del titolo e un’area di testo del contenuto, puoi saltare la parte successiva di questo tutorial.

Creazione di tipi di post personalizzati (in dettaglio)

Nella sezione di base sopra, abbiamo utilizzato due argomenti per creare il nostro tipo di post personalizzato. Tuttavia, la register_post_type()funzione ha ben più di 20 argomenti che puoi usare. Ti dà molto controllo sulle specifiche del tuo tipo di post senza troppi problemi. Puoi combinarli e abbinarli in tutti i modi che non riesco nemmeno ad avvicinarmi a coprire in questo tutorial.

Di seguito, descriverò ciascuno degli argomenti disponibili per l’uso. Ogni sezione avrà un esempio di come aggiungere l’argomento all’array degli argomenti.

Labels

Le labels sono una matrice di stringhe che rappresenta il tipo di post nell’amministratore. Ogni stringa è un po’ di testo mostrato per una particolare funzione nell’amministratore. Per impostazione predefinita, i tipi di post non gerarchici avranno il testo con “post” al loro interno e i tipi di post gerarchici avranno il testo con “pagina” al loro interno.

È particolarmente importante rendere queste stringhe traducibili se stai creando un plug-in per uso pubblico.

Questo elenco è un insieme di esempi generali di quando viene utilizzata ciascuna stringa. Tuttavia, ciascuno può essere utilizzato in più posizioni nell’amministratore.

  • name: La forma plurale del nome del tuo tipo di post.
  • singular_name: La forma singolare del nome del tuo tipo di post.
  • add_new: la voce di menu per aggiungere un nuovo post.
  • add_new_item: L’intestazione mostrata durante la creazione di un nuovo post.
  • edit: la voce di menu per la modifica dei post.
  • edit_item: l’intestazione mostrata durante la modifica di un post.
  • new_item: visualizzato nel menu dei preferiti nell’intestazione dell’amministratore.
  • view: utilizzato come testo in un collegamento per visualizzare il post.
  • view_item: mostrato accanto al permalink nella schermata di modifica del post.
  • search_items: testo del pulsante per la casella di ricerca nella schermata di modifica dei post.
  • not_found: testo da visualizzare quando non vengono trovati post tramite la ricerca nell’amministratore.
  • not_found_in_trash: testo da visualizzare quando non ci sono post nel cestino.
  • parent: utilizzato come etichetta per un post principale nella schermata di modifica dei post. Utile solo per i tipi di post gerarchici.
add_action('init', 'super_post_cpt');
function super_post_cpt() {
$labels = array(
	'name' => __( 'Super Post' ),
	'singular_name' => __( 'Super Post' ),
	'add_new' => __( 'Add New' ),
	'add_new_item' => __( 'Add New Super Post' ),
	'edit' => __( 'Edit' ),
	'edit_item' => __( 'Edit Super Post' ),
	'new_item' => __( 'New Super Post' ),
	'view' => __( 'View Super Post' ),
	'view_item' => __( 'View Super Post' ),
	'search_items' => __( 'Search Super Posts' ),
	'not_found' => __( 'No super posts found' ),
	'not_found_in_trash' => __( 'No super posts found in Trash' ),
	'parent' => __( 'Parent Super Post' ),
);
$args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'taxonomies' => array('supertype'),
        'rewrite' => array('slug' => 'super-post', 'with_front' => false),
        //Adding custom rewrite tag
        'capability_type' => 'post',
        'has_archive' => true,
        'hierarchical' => true,
        'menu_position' => null,
        'supports' => array('title', 'thumbnail', 'excerpt','editor','page-attributes'),
    );
    register_post_type('super_post', $args);
}
Fonte: https://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress
Hai trovato interessante l'articolo? Condividilo!
Ancora nessun commento, vuoi essere il primo?

Your Email address will not be published.

Articoli correlati

Ottieni informazioni preziose e fai crescere la tua attività più velocemente con i nostri video, tutorial e ricerche.

Creare un post dal frontend di WordPress senza plug-in!

Se desideri aggiungere un nuovo post senza accedere alla dashboard di WordPress o consentire ai tuoi visitatori di inviare i propri contenuti, puoi farlo tramite l’invio di post front-end.

Come personalizzare l’area login di WordPress

La domanda che spesso si trova nella posta del support, tra le domande di chi acquista un hosting e vuole iniziare a fare blogging: come personalizzare la pagina login di WordPress?

Come posso mostrare un elenco di custom post type?

I tipi di post personalizzati non hanno regole rigide che definiscono cosa sono. Possono rappresentare qualsiasi tipo di contenuto desideri. Utilizzeremo il ciclo standard di WordPress per listare i CPT e lo personalizzeremo come vogliamo.