Szukaj…


Parametry

Parametr Wyjaśnienie
$template Przekazuje jeden parametr do filtru, $template jest bieżącą ścieżką do odpowiedniego pliku dla typu wpisu, jaki znajduje się w aktywnym motywie potomnym lub motywie nadrzędnym (jeśli żaden motyw potomny nie jest na miejscu lub motyw potomny nie ma szablonów niższej rangi. Zobacz hierarchię szablonów wordpress po więcej szczegółów).

Uwagi

Musisz zwrócić $template nawet jeśli nie jest modyfikowany. Jeśli to Cię apply_filter() , spójrz na przykłady, w których zastosowano kod apply_filter() w kodzie

Nie powinieneś konfigurować tutaj zmiennych do użycia później, są lepsze haczyki do tego.

Przydatnym programem dla tego filtra jest:

  1. Sprawdź $template zawiera naszą niestandardową nazwę typu postu -> hierarchia szablonów !!
  2. jeśli nie, przeszukaj naszą wtyczkę w poszukiwaniu odpowiednich plików -> Lepiej jest wskazywać określone pliki niż przeszukiwać foldery w poszukiwaniu plików. Bardziej wydajny. Ale całkowicie do dewelopera.
  3. zwróć szablon.

Prosty przykład

Ten filtr jest bardzo przydatny. Jednym z typowych problemów programistów jest sposób dołączania szablonów do opracowywanych wtyczek.

Filtr jest stosowany natychmiast po zlokalizowaniu przez wordpress odpowiedniego szablonu w aktywnym motywie nadrzędnym / nadrzędnym przy użyciu hierarchii wp.

Ostrożnie określ, kiedy chcesz zmodyfikować ścieżkę szablonu. W poniższym przykładzie kod sprawdza, czy bieżąca strona jest pojedynczym widokiem naszego niestandardowego typu postu cpt .

Prosty przykład na rozpoczęcie!

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;

}

Więcej przykładów 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow