Nella prima parte di questa serie ho discusso quali sono i formati dei post e perché dovresti usarli. Ora è il momento di imparare come utilizzare i formati dei post per controllare il ciclo principale del tema in modo da visualizzare correttamente ogni tipo di post.
Prima di poter utilizzare i formati dei post in un tema, devi registrarne il supporto. Ogni tipo di post, i tipi di post personalizzati (cioè post e pagine) o personalizzati devono avere il supporto per i tipi di post registrati separatamente.
Per i post usi il function add_theme_support ()
come parte della configurazione del tema in functions.php
, come questo:
add_action ('after_setup_theme', 'slug_post_formats'); function slug_post_formats () add_theme_support ('post-formati', array ('aside', 'image', 'video', 'audio', 'quote', 'link', 'gallery',));
Per altri tipi di post, incluse le pagine e i tipi di post personalizzati, dovresti usare aggiungi post_type_support ()
. Se vuoi che le pagine supportino gli stessi formati di post che pubblichi, devi semplicemente dire a WordPress che vuoi che questo piaccia:
add_post_type_support ('page', 'post-formats');
È possibile utilizzare un codice simile per aggiungere supporto per tipi di post personalizzati oppure aggiungere "post-formati" all'argomento "supporta" in register_post_type ()
quando crei il tipo di post.
Nella sezione precedente il codice che ti ho mostrato ha aggiunto il supporto ad altri tipi di post degli stessi formati di post che erano abilitati per i post. Se si desidera che il tipo di post personalizzato supporti diversi formati di post, è anche possibile utilizzarlo add_post_type_support ()
semplicemente passando una serie di formati di post su di esso.
Ad esempio, per aggiungere il supporto per le gallerie e le immagini alle pagine, mentre aggiungi video a un tipo di post personalizzato chiamato "prodotti" e tutti i formati dei post in post, devi fare questo:
add_action ('after_setup_theme', 'slug_post_formats'); function slug_post_formats () add_theme_support ('post-formati', array ('aside', 'image', 'video', 'audio', 'quote', 'link', 'gallery',)); add_post_type_support ('pages', 'post-formats', array ('gallery', 'image')); add_post_type_support ('prodotti', 'post-formati', array ('video'));
Ora che il tuo tema supporta i formati dei post, è ora di imparare come usarli.
Ciò che rende i formati post interessanti è che possiamo avere un ciclo principale, con i nostri diversi markup per ogni formato di post in file separati. Questa funzionalità è grazie a due funzioni, la prima delle quali dovresti familiarizzare con è get_template_part ()
.
Mentre lo usa richiedere()
, se rintracciate abbastanza lontano nel codice sorgente, get_template_part ()
ci dà un modo più flessibile e più indulgente per includere i file di modello in altri modelli con cui non abbiamo a che fare richiedere()
. Dico perdono perché, al contrario di richiedere()
, get_template_part ()
può funzionare con percorsi di file che non esistono.
Per esempio, get_template_part ('content', 'foo');
tenterà di caricare il file content-foo.php
, ma se non esiste tenterà quindi di caricare content.php
anziché. In contrasto, require ('content-foo.php');
restituirà un errore se content-foo.php
non esiste, se content.php
esiste o no.
Tieni presente che get_template_part ()
è adattato per questo uso specifico in quanto carica file relativi alla radice del tema corrente. Di conseguenza non hai bisogno di usare get_template_directory_uri ()
o qualsiasi funzione simile per specificare il percorso. Puoi ancora usarlo per caricare file in sottodirectory della directory principale del tema, specificando il percorso, relativo alla radice del tema, nel primo argomento. Ad esempio, per caricare content-main.php
da una sottodirectory chiamata "parti" che useresti get_template_part ('parts / content', 'main');
.
La seconda funzione che rende tutto questo possibile è get_post_format ()
, che restituisce il formato del post per il post corrente nel ciclo. Anche se ha molti usi, questa funzione è l'uso principale per un argomento get_template_part ()
. È ciò che ci consente di includere parti di contenuto specifiche per un formato di post, come vedremo nella prossima sezione.
A causa della flessibilità di get_post_format ()
discusso nell'ultima sezione, siamo in grado di utilizzare get_post_format ()
come uno dei suoi argomenti, anche se non c'è una parte di contenuto nel tema per tutti i formati di post in uso.
Ora che comprendi le due funzioni che rendono possibili parti di contenuti specifici per il formato post, mettiamole tutte insieme.
Dai un'occhiata al ciclo principale di Twenty Fourteen:
Come puoi vedere questo è un ciclo molto semplice. Il markup effettivo per i post è contenuto nelle singole parti di contenuto. A causa della natura indulgente di get_template_part ()
se non esiste una parte di contenuto per un formato di post specifico, WordPress tornerà a content.php
. Ciò significa che se il post corrente ha il formato 'video' WordPress tenterà prima di caricare content-video.php
, e se questo non viene trovato, allora ricadrà a content.php
.
Come ho detto prima, get_template_part ()
è a conoscenza del tema del bambino. Ciò significa che WordPress cercherà prima un file nella cartella del tema figlio prima del tema principale, se è in uso un tema figlio.
Di conseguenza, è una buona pratica da usare get_template_part ('content', get_post_format ());
per includere il tuo ciclo principale nella tua pagina, anche se il tuo tema non supporta i formati dei post. In questo modo un tema figlio può dichiarare il supporto per un formato di post e aggiungere le proprie parti di contenuto per i formati di post che supporta.
Ora che sai come aggiungere supporto al tuo tema per i formati dei post e per impostare diverse parti del modello in base al formato del post, è il momento di iniziare a pensare a come metterli a disposizione nel tuo tema. Tratterò come farlo nel resto di questa serie. Assicurati di controllare anche il codice dei temi, come Twenty Fourteen, che implementa bene i formati dei post per trarre ispirazione.