Intereting Posts

Используйте is_category (), is_tag (), … в functions.php

Я хочу проверить functions.php если фактическая страница – это страница категории, страница тега, … но функции для ее проверки ( is_category() , is_tag() , …), похоже, не работают, так как это состояние:

 if(is_category() || is_tag() || is_home()) 

никогда не проходите.

Например, is_category () , похоже, не нужно вызывать в цикле.

Любая идея, почему он не работает и как его решить?

Редактировать:

Полный пример для моего случая:

внутри функции.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 } 

Solutions Collecting From Web of "Используйте is_category (), is_tag (), … в functions.php"

Ваша проблема заключается в том, что вы не завернули его в обратном вызове, но сразу же выполнили его, когда functions.php была загружена ядром. К тому времени глобальный объект $wp_query не будет полностью инициализирован, а is_category() и т. Д. Не смогут выполнить то, что вы ожидаете от них. Поэтому ваши проверки if / else должны быть перемещены внутри обратного вызова следующим образом:

 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; }