get_post_type() — инструкция как и где применять

Функция get_post_type() в WordPress — это мощнейший инструмент для разработчиков, позволяющий определить тип поста и настроить логику отображения контента в зависимости от его типа. Эта статья представляет ряд примеров использования 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.

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

Популярные статьи: