Ich möchte in functions.php
einchecken functions.php
wenn die aktuelle Seite eine Kategorieseite, eine Tag-Seite, … ist, aber die zu überprüfenden functionen ( is_category()
, is_tag()
, …) scheinen nicht zu funktionieren Bedingung:
if(is_category() || is_tag() || is_home())
niemals bestehen.
Zum Beispiel scheint is_category () nicht in der Schleife aufgerufen zu werden.
Irgendeine Idee, warum es nicht funktioniert und wie man es triggers?
Bearbeiten:
Das vollständige Beispiel für meinen Fall ist:
Innenfunktionen.php
/* Add hentry class to body */ if(! function_exists( 'one_function' )) { function one_function( $classes ) { $classes[] = get_classes(); //this is a custom theme function which put the classes into an array. $classes[] = 'hentry'; return $classes; } if(is_category() || is_tag() || is_home()) add_filter( 'body_class', 'one_function' ); //this is executed if removing the "if" condition }
Ihr Problem ist, dass Sie es nicht in einen Callback-Code eingefügt haben, sondern sofort ausgeführt haben, als functions.php
von core geladen wurde. Bis dahin ist das globale $wp_query
Objekt nicht vollständig initialisiert, und die Wrapper von is_category()
usw. können nicht das liefern, was Sie von ihnen erwarten. Also sollten Ihre if / else-Checks wie folgt innerhalb des Callbacks verschoben werden:
add_filter( 'body_class', 'addBodyClasses' ); function addBodyClasses( $classes ) { if ( is_category() || is_tag() || is_home() ) { $classes = array_merge( $classes, array( 'hentry', // other classes you want to add go here ) ); } return $classes; }