WordPress
template_include
Ricerca…
Parametri
Parametro | Spiegazione |
---|---|
$template | Passa un parametro al filtro, $template è il percorso corrente del file appropriato per il tipo di post, come trovato nel tema figlio attivo o nel tema principale (se nessun tema figlio sul posto o tema figlio ha modelli classificati inferiori. Vedi la gerarchia dei template di wordpress per ulteriori dettagli). |
Osservazioni
Devi restituire $template
anche se non si modifica. Se questo ti confonde, guarda gli esempi in cui apply_filter()
è stato usato nel codice
Non dovresti impostare le variabili qui per usarle più tardi, ci sono degli ami migliori per questo.
Un flusso di programma utile per questo filtro è:
- Controlla
$template
include il nostro nome del tipo di post personalizzato -> gerarchia dei modelli !! - in caso contrario, cerca nel nostro plug-in file adatti -> È meglio puntare a file specifici piuttosto che cercare nelle cartelle i file. Più efficiente. Ma completamente fino allo sviluppatore.
- restituire il modello.
Semplice esempio
Questo filtro è molto utile. Uno dei problemi più comuni per gli sviluppatori è come includere modelli nei plugin che sviluppano.
Il filtro viene applicato immediatamente dopo che wordpress individua il modello appropriato nel tema figlio / genitore attivo utilizzando la gerarchia di wp.
Fare attenzione a definire quando si desidera modificare il percorso del modello. Nell'esempio seguente, il codice controlla se la pagina corrente è l'unico punto di vista del nostro tipo messaggio personalizzato cpt
.
Un esempio abbastanza semplice per iniziare!
add_filter('template_include', 'custom_function');
function custom_function($template){
//change a single post template...
if( is_singular('cpt') ){
$template= 'path/to/another/template_file';
}
return $template;
}
Altro esempio di Adv
add_filter('template_include', 'custom_function');
function custom_function($template){
/*
* This example is a little more advanced.
* It will check to see if $template contains our post-type in the path.
* If it does, the theme contains a high level template e.g. single-cpt.php
* If not we look in the plugin parent folder for the file. e.g. single-cpt.php
*/
//check to see if the post type is in the filename (high priority file)
//return template if it is!
global $post;
if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){
return $template;
}
$plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here...
if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php') ){
$template= $plugin_path.'/single-'.$post->post_type.'.php';
} elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) {
$template= $plugin_path.'/archive-'.$post->post_type.'.php';
}
return $template;
}