WordPress
szablon_włącz
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:
- Sprawdź
$template
zawiera naszą niestandardową nazwę typu postu -> hierarchia szablonów !! - 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.
- 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;
}