Недавно я много работал с расширенными настраиваемыми полями в WordPress и считаю их невероятно полезными при работе с сообщениями, но, похоже, не могу получить те же результаты при работе со страницами.
В настоящее время у меня есть страница, которая использует цикл для просмотра всех сообщений с категорией «новости». Цикл создает структуру для каждой новостной статьи и перечисляет их 4 на странице с разбивкой по страницам в левой части страницы. В правой части страницы у меня есть раздел, в котором должен отображаться прикрепленный объект поста ACF (в данном случае один пользовательский тип поста «Персонал», назначенный в разделе редактирования страниц).
Итак, слева есть цикл для сообщений, а справа мне нужен объект Post для показа. Единственная проблема заключается в том, что все обычные методы получения данных постобъекта не работают:
<?php
$post_object = get_field('attached_story');
print_r($post_object);
?>
Это ничего не возвращает. Я поместил его в цикл / вне цикла безрезультатно (я думаю, поэтому он не работает, потому что он должен быть внутри цикла). Цикл для отображения сообщений показан здесь:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('post_type' => 'news', 'showposts' => '4', 'paged' => $paged);
$the_query = new WP_Query( $args );
...
if( have_posts() ) : while($the_query->have_posts()) : $the_query->the_post()
?>
У меня такой вопрос — есть ли особый подход к использованию объектов записей в шаблонах страниц? Есть ли другой цикл, который должен быть создан для того, чтобы проходить через пользовательские поля страниц, в отличие от сообщений? И, наконец, есть ли способ просмотреть массив текущих страниц полностью со всеми настраиваемыми полями?
На случай, если кто-то еще столкнется с этой проблемой в будущем, решение было использовать метод query_posts () для установки цикла вместо вызова класса «новый WP_Query». Мой вызов цикла теперь выглядит так:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array('post_type' => 'news','showposts' => '4', 'paged' => $paged));
Теперь мы просматриваем прилагаемую историю, используя следующий код:
<?php
$post_object = get_field('attached_story');
if( $post_object ):
$post = $post_object;
setup_postdata( $post ); ?>
<?php $short_desc = get_field('short_description'); ?>
All over operations...
<?php wp_reset_postdata();?>
<?php endif; ?>
Вы можете использовать следующий код внутри вашего цикла:
<?php $values = get_post_custom_values("your custom field name");
if($values){?>
<?php echo $values[0]; ?>
<?php } ?>