- Status
- Offen
Übersicht über das Problem
Die native WordPress-Funktion has_category funktioniert nicht für übersetzte Beiträge.
Ein Beispiel dafür sieht wie folgt aus:
- Wir haben eine Kategorie mit dem englischen Slug „test“ und ihrer französischen Übersetzung „test-fr“.
- Diese Kategorie ist Beiträgen zugewiesen.
- Wenn Sie has_category(”test”) innerhalb einer Schleife in der Datei single.php Ihres Themes aufrufen, wird für die Standardsprache true zurückgegeben, für die Übersetzung jedoch false.
Problemumgehung
Definieren Sie einen neuen Filter in der Datei functions.php Ihres Themes:
function wp_has_category ($category) {
$category = get_term_by('name', $category, 'category');
return has_category($category);
}
add_filter('wp_has_category', 'wp_has_category', 10, 1);Ersetzen Sie die Funktion has_category durch diesen neuen Filter:
apply_filters( 'wp_has_category', 'test' )
Dieser Filter verwendet die übersetzte Kategorie basierend auf dem Namen der ursprünglichen Kategorie und prüft, ob die übersetzte Kategorie einem Beitrag zugewiesen ist.