Отображение полей произвольного типа записей

22 дек. 2016 г., 11:55:01
Просмотры: 16.6K
Голосов: 3

Я создаю сайт и хочу отображать События. Для этого я создал произвольный тип записей '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.

Спасибо за любую помощь!

0
Все ответы на вопрос 1
8

Пользовательские поля сохраняются в таблице post_meta. В вашем запросе вы получили заголовок записи и её ID, поэтому теперь вам нужно получить метаданные записи.

Используйте:

<?php
get_post_meta( get_the_ID(), '_location', true );
?>

То же самое для других ваших пользовательских полей — только '_location' будет меняться в зависимости от поля, которое вы получаете. Подробнее о метаданных записи можно узнать здесь

22 дек. 2016 г. 12:02:47
Комментарии

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

Nanou Ponette Nanou Ponette
22 дек. 2016 г. 12:05:44

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

fmeaddons fmeaddons
22 дек. 2016 г. 12:07:49

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

Nanou Ponette Nanou Ponette
22 дек. 2016 г. 12:11:02

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

fmeaddons fmeaddons
22 дек. 2016 г. 12:13:44

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

Nanou Ponette Nanou Ponette
22 дек. 2016 г. 12:16:46

Попробуйте <?php echo $day; ?>, теперь что-то появилось?

fmeaddons fmeaddons
22 дек. 2016 г. 12:18:35

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

fmeaddons fmeaddons
22 дек. 2016 г. 12:25:35

Это работает! Спасибо

Nanou Ponette Nanou Ponette
22 дек. 2016 г. 12:26:25
Показать остальные 3 комментариев