La struttura delle cartelle di un template WordPress potrebbe non piacere ad alcuni sviluppatori abituati ad organizzare il codice secondo propri schemi logici. Di seguito una soluzione per organizzare il codice secondo le proprie esigenze.
Nell’esempio vedremo come creare un cartella “library” che conterrà i file per la customizzazione del template.
Iniziamo con la modifica al file functions.php che trovate di seguito, con una sola riga di codice. In questo modo includiamo il codice necessario per il caricamento del template.
functions.php
require_once( 'library/custom-post-templates.php' );
Di seguito il codice che ci permette di utilizzare la cartella “post-templates” che contiene al suo interno i file di template per il Custom Post Type che si desidera.
Stiamo dicendo al CMS di utilizzare il template “single-lessons.php” che si trova nella cartella “post-templates” ma solo per il CPT ‘lessons’.
Attraverso il filtro ‘single template‘ intercettiamo l’utilizzo di un template per un “Single post”
custom-post-templates.php
function get_custom_post_type_template($single_template) { global $post; if ($post->post_type == 'lessons') { //Modificare con il nome del CPT $single_template = get_template_directory() . '/post-templates/single-lessons.php'; //Modificare con il path ed il nome del template per il post } return $single_template; } add_filter( 'single_template', 'get_custom_post_type_template' ); }
Possiamo usare la stessa tecnica per avere un template custom quando viene caricata una particolare taxonomy
custom-taxonomy-templates.php
function get_custom_taxonomy_template( $taxonomy_template ) { global $post; if ( is_tax ('modules' ) ) { //Modificare con il nome della taxonomy $taxonomy_template = get_template_directory() . '/taxonomy-templates/taxonomy-module.php'; //Modificare con il path ed il nome del template per la taxonomy } return $taxonomy_template; } add_filter( 'taxonomy_template', 'get_custom_taxonomy_template' ) ;
oppure per definire il template per la pagina archivio di un CPT
custom-archive-templates.php
function get_custom_post_type_archive_template( $archive_template ) { global $post; if ( is_post_type_archive ( 'lessons' ) ) { //Modificare con il nome del CPT $archive_template = get_template_directory() . '/archive-templates/archive-lessons.php'; //Modificare con il path ed il nome del template per l'archivio } return $archive_template; } add_filter( 'archive_template', 'get_custom_post_type_archive_template' ) ;