Sök…


parametrar

Parameter Förklaring
$template Skickar en parameter till filtret, $template är den aktuella sökvägen till lämplig fil för posttypen som finns i det aktiva underordnatema eller föräldertema (om inget barntema på plats eller underordnatema har lägre rangordnade mallar. Se ordpressmallhierarki för mer detaljer).

Anmärkningar

Du måste returnera $template även om du inte ändrar. Om detta förvirrar, titta på exempel där apply_filter() har använts i kod

Du bör inte ställa in variabler här för användning senare, det finns bättre krokar för detta.

Ett användbart programflöde för detta filter är:

  1. Kontrollera $template innehåller vårt anpassade posttypnamn -> mallhierarki !!
  2. Om inte, sök i vår plugin efter lämpliga filer -> Det är bättre att peka på specifika filer snarare än att söka igenom mappar efter filer. Mer effektiv. Men helt upp till utvecklaren.
  3. returnera mallen.

Enkelt exempel

Detta filter är mycket användbart. Ett av de vanliga problemen för utvecklare är hur man inkluderar mallar i plugins som de utvecklar.

Filtret appliceras omedelbart efter att wordpress har hittat rätt mall i det aktiva barnet / föräldertemaet med hjälp av wp-hierarkin.

Var noga med att definiera när du vill ändra mallvägen. I exemplet nedan kontrollerar koden för att se om den aktuella sidan är den enda vyn för vår anpassade cpt .

Enkelt nog exempel för att komma igång med!

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;

}

Mer Adv-exempel

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow