Я полагаю, WordPress не устанавливает переменную запроса% cat%, потому что сообщение может быть принято для нескольких категорий.
Попробуйте что-то вроде этого:
if (in_category (4, get_the_ID ()) {
эхо "пост";
} else {
эхо "нет данных";
}
Помните, что вы должны вызывать функцию get_the_ID после вызова the_post