Как создать заголовок для постов в WordPress?

Как правильно вывести заголовок для каждого из двух типов постов в кастомной таксономии?
  • 20 сентября 2024 г. 14:13
Ответы на вопрос 2
Создание заголовка для постов в WordPress и вывод заголовков для различных типов постов в кастомной таксономии — это довольно простые процессы. Вот шаги, которые помогут вам в этом:

### 1. Создание заголовка для постов в WordPress

Когда вы создаете новый пост в WordPress, заголовок задается в специальном поле в редакторе постов. Заголовок является важной частью SEO и помогает пользователям понять содержание записи.

### 2. Вывод заголовка для кастомных постов в таксономии

Для того чтобы вывести заголовки для различных типов постов в кастомной таксономии, вам нужно использовать WP_Query, чтобы получить нужные посты, и затем вывести их заголовки.

Вот пример кода, который демонстрирует, как это можно сделать:

```php
<?php
// Определяем параметры запроса
$args = array(
    'post_type' => array('custom_post_type1', 'custom_post_type2'), // ваши кастомные типы постов
    'tax_query' => array(
        array(
            'taxonomy' => 'your_custom_taxonomy', // ваша кастомная таксономия
            'field'    => 'slug',
            'terms'    => 'your_term_slug', // ваш термин
        ),
    ),
);

// Запрос постов
$query = new WP_Query($args);

// Проверка, есть ли посты
if ($query->have_posts()) {
    echo '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        // Выводим заголовок с ссылкой на пост
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
} else {
    echo 'Посты не найдены.';
}

// Восстановить глобальную переменную поста
wp_reset_postdata();
?>
```

### Объяснение кода:

- **post_type**: В этом массиве указываются все кастомные типы постов, для которых мы хотим извлечь заголовки.
- **tax_query**: Здесь мы определяем параметры для выборки постов в зависимости от кастомной таксономии и термина.
- **WP_Query**: Этот класс позволяет нам делать запросы к базе данных и извлекать посты.
- **have_posts() и the_post()**: Эти методы используются для циклического перебора постов.
- **get_permalink() и get_the_title()**: Эти функции используются для получения ссылки и заголовка поста соответственно.

Этот код нужно добавить в подходящее место вашей темы WordPress, например, в файл шаблона (например, в `page.php`, `single.php` или в любой другой файл, где вы хотите вывести заголовки).

Я так понимаю, нужно сделать проверку...

Конечно нужно сделать проверку... Выводите просто заголовок таксономии только в том случае, если для этой таксономии есть посты

<section id="our-media">
    <div class="container">
        <?php
        $cats = get_terms(array('taxonomy' => 'headline', 'post_type' => 'our-media'));
        foreach ($cats as $cat) {
            $query = new WP_Query(array(
                'post_type' => 'our-media',
                'tax_query' => array(
                    array(
                        'taxonomy' => 'headline',
                        'field' => 'term_id',
                        'terms' => $cat->term_id,
                    ),
                ),
                'posts_per_page' => -1,
                'order' => 'ASC',
            ));

            if ($query->have_posts()) { ?>
                <h3><?php echo $cat->name; ?></h3>
                <ul>
                    <?php while ($query->have_posts()) {
                        $query->the_post(); ?>
                        <li>
                            <!-- код поста -->
                        </li>
                    <?php } ?>
                </ul>
            <?php }
            wp_reset_postdata();
        }
        ?>
    </div>
</section>

<section id="units">
    <div class="container">
        <?php
        $cats = get_terms(array('taxonomy' => 'headline', 'post_type' => 'units'));
        foreach ($cats as $cat) {
            $query = new WP_Query(array(
                'post_type' => 'units',
                'tax_query' => array(
                    array(
                        'taxonomy' => 'headline',
                        'field' => 'term_id',
                        'terms' => $cat->term_id,
                    ),
                ),
                'posts_per_page' => -1,
                'order' => 'ASC',
            ));

            if ($query->have_posts()) { ?>
                <h3><?php echo $cat->name; ?></h3>
                <p><?php echo $cat->description; ?></p>
                <ul>
                    <?php while ($query->have_posts()) {
                        $query->the_post(); ?>
                        <li>
                            <!-- код поста -->
                        </li>
                    <?php } ?>
                </ul>
            <?php }
            wp_reset_postdata();
        }
        ?>
    </div>
</section>
Похожие вопросы