WordPress è dotato di cinque tipi di post predefiniti: postpageattachmentrevision, e menu.

Mentre sviluppate il vostro plugin, potreste aver bisogno di creare il vostro specifico tipo di contenuto: per esempio, prodotti per un sito di e-commerce, compiti per un sito di e-learning, o film per un sito di recensioni.

Usando i Custom Post Types, potete registrare il vostro tipo di post. Una volta che un tipo di post personalizzato è registrato, ottiene una nuova schermata amministrativa di primo livello che può essere utilizzata per gestire e creare post di quel tipo.

Per registrare un nuovo tipo di post, si utilizza la funzione register_post_type().

Attenzione:
Si consiglia di inserire i tipi di post personalizzati in un plugin piuttosto che in un tema. Questo assicura che il contenuto dell’utente rimanga portabile anche se il tema viene cambiato.

L’esempio minimo seguente registra un nuovo tipo di post, Products, che viene identificato nel database come wporg_product.

function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __('Products', 'textdomain'),'singular_name' => __('Product', 'textdomain'),),'public' => true,'has_archive' => true,));}add_action('init', 'wporg_custom_post_type');

Expand full source codeCollapse full source code

Visita la pagina di riferimento per register_post_type() per la descrizione degli argomenti:
Devi chiamare register_post_type() prima del admin_init hook e dopo il after_setup_theme hook. Un buon gancio da usare è il init action hook.

Naming Best Practices #Naming Best Practices

È importante che prefissiate le funzioni e gli identificatori del vostro tipo di post con un breve prefisso che corrisponda al vostro plugin, tema o sito web.

Avviso:
Assicurati che il tuo identificatore di tipo di post personalizzato non superi i 20 caratteri poiché la colonna post_type nel database è attualmente un campo VARCHAR di quella lunghezza.

Attenzione:
Per garantire la compatibilità futura, non usare wp_ come identificatore – è usato dal core di WordPress.

Attenzione:
Se il tuo identificatore è troppo generico (per esempio: “product“), potrebbe entrare in conflitto con altri plugin o temi che hanno scelto di usare lo stesso identificatore.

Nota:
Non è possibile risolvere la duplicazione degli identificatori dei tipi di post senza disabilitare uno dei tipi di post in conflitto.

Top

URLs #URLs

Un tipo di post personalizzato ottiene il proprio slug all’interno della struttura dell’URL del sito.

Un post di tipo wporg_product userà la seguente struttura URL per impostazione predefinita: http://example.com/wporg_product/%product_name%.

wporg_product è lo slug del tuo post type personalizzato e %product_name% è lo slug del tuo particolare prodotto.

Il permalink finale sarebbe: http://example.com/wporg_product/wporg-is-awesome.

Puoi vedere il permalink nella schermata di modifica del tuo post type personalizzato, proprio come per i post type predefiniti.

Uno slug personalizzato per un tipo di post personalizzato #A Custom Slug for a Custom Post Type

Per impostare uno slug personalizzato per lo slug del tuo tipo di post personalizzato tutto è necessario aggiungere una coppia chiave => valore alla chiave rewrite nell’array di argomenti register_post_type().

Esempio:

function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __( 'Products', 'textdomain' ),'singular_name' => __( 'Product', 'textdomain' ),),'public' => true,'has_archive' => true,'rewrite' => array( 'slug' => 'products' ), // my custom slug));}add_action('init', 'wporg_custom_post_type');

Expand full source codeCollapse full source code

Il risultato di quanto sopra sarà la seguente struttura di URL: http://example.com/products/%product_name%

Attenzione:
Utilizzare uno slug generico come products può potenzialmente entrare in conflitto con altri plugin o temi, quindi cerca di usarne uno che sia più specifico per il tuo contenuto.

Nota:
A differenza degli identificatori di post type personalizzati, il problema degli slug duplicati può essere risolto facilmente cambiando lo slug per uno dei post type in conflitto.

Se l’autore del plugin ha incluso una chiamata apply_filters() sugli argomenti, questo può essere fatto programmaticamente sovrascrivendo gli argomenti inviati tramite la funzione register_post_type().

Lascia un commento

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