Șablon diferit pentru subcategorii
Aș dori să am un șablon diferit pentru categorii și subcategorii Șablonul pentru categorii este setat în categories.php Este cumva posibil să încărcăm șablonul pentru subcategorii din subcategories.php sau ceva similar?

Ierarhia de șabloane are filtre pentru toate tipurile de șabloane. Aici putem folosi category_template
, verificăm dacă categoria curentă are un părinte și încărcăm fișierul subcategory.php
în acest caz:
function wpd_subcategory_template( $template ) {
$cat = get_queried_object();
if ( isset( $cat ) && $cat->category_parent ) {
$template = locate_template( 'subcategory.php' );
}
return $template;
}
add_filter( 'category_template', 'wpd_subcategory_template' );

În fișierul functions.php
al temei tale sau într-un plugin.

trebuie doar să înlocuiești subcategory.php cu fișierul pe care vrei să devină template-ul părinte

@Djanym RE sugestia ta de editare să testezi mai întâi isset( $cat )
: În general apreciez precauția, dar în ce circumstanțe poate fi apelat category_template când get_queried_object() este null?

Am editat codul tău pentru a adăuga mai multă funcționalitate. Pentru cazurile în care cineva ar dori să aibă un șablon diferit pentru fiecare subcategorie. De exemplu, dacă ai categorii organizate astfel:
- continent
- țară
- oraș
- țară
Și ai nevoie de un șablon diferit pentru oraș. Mai întâi verificăm dacă orașul are o subcategorie, dacă nu, apelăm șablonul pentru oraș. Restul codului verifică dacă o categorie are un părinte.
// Șablon diferit pentru subcategorii
function wpd_subcategory_template( $template ) {
$cat = get_queried_object();
$children = get_terms( $cat->taxonomy, array(
'parent' => $cat->term_id,
'hide_empty' => false
) );
if( ! $children ) {
$template = locate_template( 'category-country-city.php' );
} elseif( 0 < $cat->category_parent ) {
$template = locate_template( 'category-country.php' );
}
return $template;
}
add_filter( 'category_template', 'wpd_subcategory_template' );
