Как создать заголовок для постов в 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` или в любой другой файл, где вы хотите вывести заголовки).
<blockquote><br/>
Я так понимаю, нужно сделать проверку...<br/>
</blockquote> <br/> Конечно нужно сделать проверку... Выводите просто заголовок таксономии только в том случае, если для этой таксономии есть посты <br/> <br/> <pre><code class="php">&lt;section id="our-media"&gt;
    &lt;div class="container"&gt;
        &lt;?php
        $cats = get_terms(array('taxonomy' =&gt; 'headline', 'post_type' =&gt; 'our-media'));
        foreach ($cats as $cat) {
            $query = new WP_Query(array(
                'post_type' =&gt; 'our-media',
                'tax_query' =&gt; array(
                    array(
                        'taxonomy' =&gt; 'headline',
                        'field' =&gt; 'term_id',
                        'terms' =&gt; $cat-&gt;term_id,
                    ),
                ),
                'posts_per_page' =&gt; -1,
                'order' =&gt; 'ASC',
            ));

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

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

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