Как правильно вывести заголовок для каждого из двух типов постов в кастомной таксономии?
Создание заголовка для постов в 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>