Отображение полей произвольного типа записей
Я создаю сайт и хочу отображать События. Для этого я создал произвольный тип записей 'event'.
Я делаю запрос событий, чтобы показать их на странице. События также имеют пользовательские поля: 'Location', 'Day', 'Month', 'Year' и категорию.
Вот мой текущий код:
<?php
$args = array(
'post_type' => 'event', // Тип записи - event
);
$events = new WP_Query( $args );
if( $events->have_posts() ) {
while( $events->have_posts() ) {
$events->the_post();
?>
<div class='event'>
<div class="event-date">
<?php
// Выводим поля даты
echo get_field('day') . '/' . get_field('month') . '/' . get_field('year');
?>
</div>
<div class="event-content">
<div class="event-title"><?php the_title() ?></div>
<div class="event-info">
<span>Место: <?php echo get_field('location'); ?></span>
<span>Категория: <?php
$categories = get_the_terms(get_the_ID(), 'event_category');
if($categories) {
foreach($categories as $category) {
echo $category->name;
}
}
?></span>
</div>
</div>
</div>
<?php
}
} else {
echo 'Нет событий!';
}
?>
Который выводит только заголовок. Как я могу отобразить пользовательские поля и категорию?
Я довольно новичок в разработке под WordPress, раньше программировал на .NET.
Спасибо за любую помощь!

Пользовательские поля сохраняются в таблице post_meta. В вашем запросе вы получили заголовок записи и её ID, поэтому теперь вам нужно получить метаданные записи.
Используйте:
<?php
get_post_meta( get_the_ID(), '_location', true );
?>
То же самое для других ваших пользовательских полей — только '_location' будет меняться в зависимости от поля, которое вы получаете. Подробнее о метаданных записи можно узнать здесь

Я попробую эту функцию. Что насчёт использования get_post_custom() ?

вы также можете использовать эту функцию, у вас есть оба варианта

Спасибо! Оба варианта вроде работают, но у меня проблемы с извлечением точного значения из массива.

Думаю, вам стоит использовать get_post_meta(), чтобы получить точное значение произвольного поля. Это упростит вашу работу, так как не придётся извлекать значение из массива, как при использовании get_post_custom().

Да, действительно. Но var_dump($day); возвращает string(1) "4", а <?php $day ?> не выводит ничего. Я что-то упускаю.. Извините, я ещё новичок.

Давайте продолжим обсуждение в чате.
