Zoeken…


parameters

Parameter Uitleg
$template Geeft één parameter door aan het filter, $template is het huidige pad naar het juiste bestand voor het posttype zoals gevonden in het actieve child-thema of het parent-thema (als er geen child-thema aanwezig is of child-thema lager gerangschikte sjablonen heeft. Zie wordpress-sjabloonhiërarchie voor meer details).

Opmerkingen

U moet $template retourneren, zelfs als u deze niet wijzigt. Als u hierdoor in de war apply_filter() , kunt u voorbeelden bekijken waarin apply_filter() in de code is gebruikt

Je moet hier geen variabelen instellen voor later gebruik, hiervoor zijn betere haken.

Een nuttige programmastroom voor dit filter is:

  1. Controleer $template bevat onze aangepaste berichttype naam -> sjabloonhiërarchie !!
  2. zo niet, zoek dan in onze plug-in naar geschikte bestanden -> Het is beter om naar specifieke bestanden te wijzen in plaats van in mappen naar bestanden te zoeken. Efficiënter. Maar helemaal aan de ontwikkelaar.
  3. stuur de sjabloon terug.

Eenvoudig voorbeeld

Dit filter is erg handig. Een van de veel voorkomende problemen voor ontwikkelaars is hoe ze sjablonen kunnen opnemen in plug-ins die ze ontwikkelen.

Het filter wordt onmiddellijk toegepast nadat WordPress de juiste sjabloon in het actieve child / parent-thema heeft gevonden met behulp van de wp-hiërarchie.

Zorg ervoor dat u definieert wanneer u het sjabloonpad wilt wijzigen. In het onderstaande voorbeeld controleert de code of de huidige pagina de enkele weergave is van ons aangepaste cpt .

Eenvoudig genoeg voorbeeld om mee te beginnen!

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;

}

Meer Adv voorbeeld

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow