Изменения в in_category в WP 4.7?

18 дек. 2016 г., 19:48:06
Просмотры: 141
Голосов: 0

После обновления до версии 4.7 эта строка кода больше не возвращает ожидаемый результат:

function foo(bar){
    global $post;
    if(in_category("my-test-category", $post)) return;
    echo "Не в категории my-test-category";
}

Что-то изменилось в фильтре in_category?

Примечание: "my-test-category" является дочерней категорией для "Uncategorized" (Без рубрики)

4
Комментарии

Я так не думаю. Похоже, что foo() всегда будет возвращать null, независимо от проверки in_category().

birgire birgire
18 дек. 2016 г. 20:55:35

Я могу заставить foo выводить что угодно, кроме этого случая, когда должно возвращаться, но не возвращается. Почему вы говорите, что всегда возвращается null?

Scott B Scott B
18 дек. 2016 г. 21:58:58

Работает ли in_category() вне функции и где вы его используете (контекст)? Разве вы не можете пропустить второй аргумент $post, если хотите использовать глобальный объект $post, потому что get_post( null ) попытается использовать глобальный объект поста, если он существует?

birgire birgire
19 дек. 2016 г. 00:41:09

Я обнаружил проблему. Я запускаю фильтр list_terms_exclusions, чтобы удалить дочерние элементы "Uncategorized". Возможно, этот фильтр не применялся к in_category() до версии 4.7 и, возможно, вплоть до 3.x?

Scott B Scott B
19 дек. 2016 г. 16:18:55
Все ответы на вопрос 1
1

Я обнаружил проблему. Я использовал фильтр list_terms_exclusions специально для удаления всех дочерних элементов рубрики "Без рубрики" с публичного сайта.

add_filter('list_terms_exclusions', 'my_list_terms_exclusions',10,2);  

Однако функция in_category() по-прежнему возвращала совпадения для этих рубрик, что мне и было нужно. Мне требовалось скрыть эти рубрики из списков категорий, но при этом мне нужно было знать, когда конкретная запись имеет одну или несколько из этих рубрик. И для этой цели я мог использовать in_category().

Эта техника работала без проблем столько, сколько я помню, до версии 4.7.

Однако начиная с версии 4.7 (а возможно и раньше), функция in_category() также фильтруется через list_terms_exclusions. Поэтому она больше не возвращает ни одной из моих рубрик из раздела "Без рубрики".

19 дек. 2016 г. 16:25:12
Комментарии

Я все еще пытаюсь определить, в каком релизе было изменено поведение, чтобы "in_category()" фильтровалось через list_terms_exclusions

Scott B Scott B
20 дек. 2016 г. 16:01:44