it-swarm.com.de

Wenn Kategorie in übergeordneter Kategorie ist?

Ich habe eine Funktion, die prüft, welche Haupt-Top-Kategorie der Post ist. Also habe ich so einen Kategoriebaum

Foo
-bar
--foobar
cat2

und wenn post in foobar ist, zeigt mir meine Funktion post_is_in_descendant_category "foo" und ich kann diesen Beitrag mit style-foo.css stylen. Was ich jetzt möchte, ist, dasselbe für die Gestaltung der Kategorieseite "foobar" zu ermöglichen. Wordpress-Funktionen in_category funktionieren nur für Posts.

Mein Code if ( in_category( 'foo' ) || post_is_in_descendant_category( get_term_by( 'name', 'foo', 'category' )) || is_category('56') ) funktioniert also nicht für Unterkategorien.

Wenn ich richtig verstehe, überprüft Ihre Funktion "post_is_in_descendant_category", ob ein Beitrag von einer Kategorie abstammt und ob eine Kategorie absteigend ist. Wenn ja, dann füge diese Funktion deiner functions.php hinzu

function is_desc_cat($cats, $_post = null) {
  foreach ((array)$cats as $cat) {
    if (in_category($cat, $_post)) {
      return true;
    } else {
      if (!is_int($cat)) $cat = get_cat_ID($cat);
      $descendants = get_term_children($cat, 'category');
      if ($descendants && in_category($descendants, $_post)) return true;
    }
  }

return false;
}

und benutze es so:

if (is_desc_cat("foo")) {
  // use foo.css
} else {
  // use default.css
}

Hoffe das hilft.

4
Bainternet

Versuche dies:

$cat_id = $wp_query->get_queried_object_id();
$parents = explode( '/', get_category_parents( $cat_id, false ) );

if( in_array( 'foo', $parents ) ) {

}
elseif( in_array( 'cat2', $parents ) ) {

}
else {


}
2
Rarst