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 è:

  1. Controlla $template include il nostro nome del tipo di post personalizzato -> gerarchia dei modelli !!
  2. 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.
  3. 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;
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow