Obwohl nicht alle Themes benutzerdefinierte Taxonomien als Teil des Themes selbst verwenden (vielleicht für Portfolios), ist es absolut wichtig, dass alle Themes vollständige Unterstützung für benutzerdefinierte Taxonomie-Archive beinhalten. Was ich viel zu oft sehe, sind Themen, die benutzerdefinierte Taxonomien in ihren Archivvorlagen nicht ausreichend unterstützen und am Ende einen PHP-Fehler beim Anzeigen eines Taxonomiearchivs verursachen. Dieses kurze Tutorial zeigt Ihnen eine wirklich einfache Möglichkeit, dieses Problem zu vermeiden und bietet vollständige Unterstützung für benutzerdefinierte Taxonomien, alles in einer einzigen Vorlagendatei.
In diesem Tutorial wird davon ausgegangen, dass alle Kategorie-, Tag- und Taxonomie-Archive mit Ihrer Single angezeigt werden archiv.php Datei, im Gegensatz zu separaten Dateien für kategorie.php, tag.php, etc.
Meistens an der Spitze der archiv.php Datei, Theme-Entwickler platzieren etwas wie folgt:
<h2><?php echo single_cat_title(); ?></h2>
<div class="category-description"><?php echo category_description(); ?></div>
Oder dieses:
<h2><?php echo single_tag_title(); ?></h2>
<div class="tag-description"><?php echo tag_description(); ?></div>
Oder eine Kombination:
<?php if( is_category() ) { ?>
<h2><?php echo single_cat_title(); ?></h2>
<div class="category-description"><?php echo category_description(); ?></div>
<?php } elseif( is_tag() ) { ?>
<h2><?php echo single_tag_title(); ?></h2>
<div class="tag-description"><?php echo tag_description(); ?></div>
<?php } ?>
Dies sind alles vollkommen gute Funktionen, außer dass sie nicht mit benutzerdefinierten Taxonomien funktionieren und tatsächlich dazu führen, dass ein Fehler ausgegeben wird (wenn keine is_category/is_tag-Bedingung verwendet wird).
Wenn wir uns das ansehen Quellcode für tag_description() Funktion, wir werden sehen, dass es sich tatsächlich nur um einen Verweis auf die ähnliche Funktion handelt Begriff_Beschreibung() Funktion, jedoch standardmäßig mit dem Parameter „post-tag“.
/**
* Retrieve tag description.
*
* @since 2.8
*
* @param int $tag Optional. Tag ID. Will use global tag ID by default.
* @return string Tag description, available.
*/
function tag_description( $tag = 0 ) {
return term_description( $tag );
}
Die Funktion term_description() ist wirklich nett, weil (wenn wir uns die Quelle), sehen wir, dass es tatsächlich den aktuell angezeigten Taxonomietyp erkennt und die Beschreibung für den Begriff aus der richtigen Taxonomie anzeigt, anstatt den Fehler wie tag_description() auszulösen. Siehe die Funktion unten:
/**
* Retrieve term description.
*
* @since 2.8
*
* @param int $term Optional. Term ID. Will use global term ID by default.
* @param string $taxonomy Optional taxonomy name. Defaults to 'post_tag'.
* @return string Term description, available.
*/
function term_description( $term = 0, $taxonomy = 'post_tag' ) {
if ( !$term && ( is_tax() || is_tag() || is_category() ) ) {
$term = get_queried_object();
$taxonomy = $term->taxonomy;
$term = $term->term_id;
}
$description = get_term_field( 'description', $term, $taxonomy );
return is_wp_error( $description ) ? '' : $description;
}
Es gibt auch eine großartige Funktion für den Taxonomie-Begriffstitel, die genauso funktioniert: single_term_title()
Das alles bedeutet, dass wir einfach Folgendes in unserem verwenden können archiv.php und es wird funktionieren für alle Taxonomien:
<h2><?php echo single_term_title(); ?></h2>
<div class="tax-description"><?php echo term_description(); ?></div>
Das ist viel besser als das Erstellen mehrerer Dateien für die verschiedenen Taxonomien (es sei denn, Sie erstellen für jede ein benutzerdefiniertes Layout) und ist auch viel sicherer.