При разработке WordPress тем, иногда возникает необходимость проверить тип записи. То есть, принадлежит ли текущий пост к определенному типу записи или нет. В этом случае, логично было бы воспользоваться функцией
if(is_post_type())
Однако, эта функция вам не даст результата.
Чтобы эта конструкция начала работать, можно создать аналогичную функцию. Например, скопируйте этот код ниже и добавьте в файл functions.php вашего шаблона:
function onwp_is_post_type(string $post_type)
{
global $post;
if(!$post) return false;
$original_post_type = get_post_type( $post->ID );
if($original_post_type === $post_type) return true;
return false;
}
Затем можно вызвать эту функцию в файлах шаблона loop.php или single.php или в других аналогичных. Если функция будет вызвана на странице, которая не является постом WordPress, то всегда будет возвращаться false.
Вызывать эту функцию можно так:
$result = onwp_is_post_type('product');
if($result) {
#Если тип записи соответствует product, то делаем что-то
} else {
#Если тип записи НЕ соответствует product, то делаем что-то другое
}
Если не нужна специальная отдельная функция и нужно выполнить проверку непосредственно в шаблоне loop.php или single.php, то можно использовать код ниже. ПРимер из реального проекта.
Для проверки типа записи у текущего поста нужно использовать следующую конструкцию:
<?php $post_type = get_post_type( $post_id ) ?> <? if ($post_type == 'apartments') { echo 'Квартира'; } elseif ($post_type == 'houses') { echo 'Дом'; } elseif ($post_type == 'plots') { echo 'Участок'; } elseif ($post_type == 'commercials') { echo 'Коммерческая недвижимость'; } elseif ($post_type == 'hotels') { echo 'Гостиница'; } else { echo 'Новость'; } ?>
В данном случае, мы сначала запрашиваем тип публикации, затем сравниваем его с нужным нам типом и, в соответствии с ответом, выдаем результат.