WordPress
template_include
Suche…
Parameter
Parameter | Erläuterung |
---|---|
$template | Übergibt einen Filter an den Filter. $template ist der aktuelle Pfad zur entsprechenden Datei für den Beitragstyp, wie er im aktiven untergeordneten Thema oder im übergeordneten Thema gefunden wird (wenn kein untergeordnetes Thema oder untergeordnetes Thema über niedrigere Vorlagen verfügt. Siehe Wordpress-Vorlagenhierarchie.) für mehr Details). |
Bemerkungen
Sie müssen $template
auch dann zurückgeben, wenn Sie sie nicht ändern. Wenn dies Sie verwirrt, schauen Sie sich Beispiele an, in denen apply_filter()
im Code verwendet wurde
Sie sollten hier keine Variablen für die spätere Verwendung einrichten, dafür gibt es bessere Haken.
Ein nützlicher Programmablauf für diesen Filter ist:
- Check
$template
beinhaltet unseren benutzerdefinierten Beitragstypnamen -> Vorlagenhierarchie !! - Wenn nicht, suchen Sie in unserem Plugin nach geeigneten Dateien -> Es ist besser, auf bestimmte Dateien zu verweisen, anstatt Ordner nach Dateien zu durchsuchen. Effizienter. Aber ganz dem Entwickler überlassen.
- Schicke die Vorlage zurück.
Einfaches Beispiel
Dieser Filter ist sehr nützlich. Ein häufiges Problem für Entwickler ist das Einbinden von Vorlagen in von ihnen entwickelte Plugins.
Der Filter wird sofort angewendet, nachdem WordPress die entsprechende Vorlage im aktiven Child / Parent-Design mithilfe der WP-Hierarchie gefunden hat.
Achten Sie darauf, zu definieren, wann Sie den Vorlagenpfad ändern möchten. Im folgenden Beispiel prüft der Code, ob die aktuelle Seite die Einzelansicht unseres benutzerdefinierten Beitragstyps " cpt
.
Ein einfaches Beispiel zum Einstieg!
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;
}
Mehr Adv Beispiel
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;
}