Функция get_post_type() в WordPress — это мощнейший инструмент для разработчиков, позволяющий определить тип поста и настроить логику отображения контента в зависимости от его типа. Эта статья представляет ряд примеров использования get_post_type() с объяснениями и примерами использования.
Оглавление:
- Основы функции get_post_type()
- Использование get_post_type(): в условных хуках
- Работа с разными шаблонами в цикле:
- Добавление классов CSS для стилизации get_post_type():
- Фильтрация контента в архивах через get_post_type()
- Интеграция get_post_type() с мета-данными
- Где реально применяется get_post_type() ?
- Финалочка
Основы функции get_post_type()
Функция возвращает тип поста, который может быть использован в условных операторах или для выбора шаблонов.
Пример кода:
$post_type = get_post_type( $post_id );
if ( 'post' === $post_type ) {
// Действия для стандартных постов
}
Использование get_post_type(): в условных хуках
Важно то, что выполнения кода в примере производится только для определенных типов постов:
add_action( 'save_post', 'my_save_post_function' );
function my_save_post_function( $post_id ) {
if ( 'page' !== get_post_type( $post_id ) ) {
return;
}
// Логика для страниц
}
Работа с разными шаблонами в цикле:
Можно использовать get_post_type() для динамического подключения разных файлов шаблонов:
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/content', get_post_type() );
endwhile;
В этом примере для каждого типа поста должен быть соответствующий файл в директории template-parts, например, content-post.php, content-page.php и т.д.
Добавление классов CSS для стилизации get_post_type():
if ( have_posts() ) :
echo '<ul>';
while ( have_posts() ) : the_post();
echo '<li class="type-' . get_post_type() . '">' . get_the_title() . '</li>';
endwhile;
echo '</ul>';
endif;
Фильтрация контента в архивах через get_post_type()
if ( is_archive() && 'custom_post_type' === get_post_type() ) {
// Особая логика для архива пользовательского типа поста
}
Интеграция get_post_type() с мета-данными
if ( 'product' === get_post_type() ) {
$price = get_post_meta( get_the_ID(), 'price', true );
echo 'Цена: ' . $price;
}
Где реально применяется get_post_type() ?
Представим, что вы хотите добавить дополнительную информацию на страницу поста, но только для определенного типа поста, например, для пользовательского типа поста «event» (мероприятие). В этом типе поста есть мета-поля с датой начала и местом проведения мероприятия.
add_action( 'the_content', 'add_event_meta_to_content' );
function add_event_meta_to_content( $content ) {
if ( 'event' === get_post_type() ) {
// Получаем мета-данные
$event_date = get_post_meta( get_the_ID(), 'event_date', true );
$event_location = get_post_meta( get_the_ID(), 'event_location', true );
// Формируем дополнительный контент
$extra_content = "<div class='event-meta'>";
$extra_content .= "<p>Дата мероприятия: $event_date</p>";
$extra_content .= "<p>Место проведения: $event_location</p>";
$extra_content .= "</div>";
// Добавляем его к основному контенту
$content .= $extra_content;
}
return $content;
}
В этом коде мы используем хук the_content для добавления дополнительной информации к содержимому поста. Функция add_event_meta_to_content проверяет тип поста и, если это «event», извлекает мета-данные о дате и месте проведения мероприятия, затем добавляет эту информацию к основному контенту поста.
Финалочка
Функция get_post_type() открывает широкие возможности для настройки поведения тем и плагинов в WordPress. Понимание и грамотное использование этой функции позволит вам создавать более гибкие и функциональные решения для веб-сайтов на WordPress.
Для отправки комментария вам необходимо авторизоваться.