2015-09-21 3 views
2

Я показываю список родственных страниц, используя приведенный ниже код. Также, как получить название страницы и ссылку. Мне нужно захватить пользовательское поле под названием excerpt и вывести его для каждого элемента брата. Как это сделать, используя get_pages? В настоящее время var_dump, который я использую, захватывает текущий отрывок страниц, что неверно.Получите поле ACF, используя get_pages()

<?php 
    global $post; 
    if (is_page() && $post->post_parent) { 

     $children = get_pages('child_of='.$post->ID); 
     $parent = $post->post_parent; 
     $our_pages = get_pages('child_of='.$parent.'&exclude='.$post->ID); 
     $ex = get_field('excerpt', $our_pages); 

     if (!empty($our_pages)): 
      foreach ($our_pages as $key => $page_item): 
       <a href="<?php echo esc_url(get_permalink($page_item->ID)); ?>" title="<?php the_title(); ?>"> 
        <?php echo $page_item->post_title ; ?> 
        <?php var_dump($ex) ?> 
      <?php endforeach; 
     endif; 

    } 

UPDATE

Ok, так что я положил в <?php print_r($page_item); ?> как было предложено, и он вернулся следующее:

enter image description here

Я не вижу какой-либо из моих АКФ полей здесь , так как я могу их получить? Каковы мои дальнейшие шаги?

+0

Сделайте одну вещь 'print_r ($ page_item);' внутри 'foreach', чтобы мы могли получить, сколько полей они получают, и дайте мне знать результат. –

+0

@KaushaMehta Пожалуйста, ознакомьтесь с обновленным вопросом, каковы следующие шаги? – egr103

+0

'excerpt' означает ваше пользовательское поле или wordpress по умолчанию? –

ответ

1

Вы полный код, как показано ниже:

<?php 
global $post; 
if (is_page() && $post->post_parent) { 

    $children = get_pages('child_of='.$post->ID); 
    $parent = $post->post_parent; 
    $our_pages = get_pages('child_of='.$parent.'&exclude='.$post->ID); 
    $ex = get_field('excerpt', $our_pages); 

    if (!empty($our_pages)): 
     foreach ($our_pages as $key => $page_item): 
      <a href="<?php echo esc_url(get_permalink($page_item->ID)); ?>" title="<?php the_title(); ?>"> 
       <?php echo $page_item->post_title ; ?> 
       <?php echo get_post_meta($page_item->ID, 'excerpt', true); ?> 
     <?php endforeach; 
    endif; 

} 

Если вы не получили данные, как выше, то изменить вам пользовательские поданное имя с любым другим именем, а затем попробовать.

+0

Это не сработало. Я не могу вызывать в каких-либо ACF-полях – egr103

+0

@ egr103 Я обновил свой ответ, так как вы сказали, что не получаете с 'get_field()'. Пожалуйста, замените выше код снова, затем проверьте и дайте мне знать. –

1

Вы должны использовать the_field() или echo get_field(), в ваш forloop, и должен передать идентификатор поста в качестве второго параметра функции:

if (!empty($our_pages)): 
    foreach ($our_pages as $key => $page_item): 
     <a href="<?php echo esc_url(get_permalink($page_item->ID)); ?>" title="<?php the_title(); ?>"> 
      <?php echo $page_item->post_title ; ?> 
      <?php the_field('excerpt', $page_item->ID); ?> 
     </a> 
    <?php endforeach; 
endif; 

Вы можете прочитать больше о том, как get_field() работ, in the documentation ,

+0

Жаль, что это не сработало. В коде есть несколько недостатков, но даже после его корректировки он ничего не выводит. – egr103

+1

этот **. ** произведение. Я только скопировал соответствующую часть вашего кода и объяснил, что не так. Это зависит от вас, чтобы применить его к вашему прецеденту. Если ничего не отображается, у вас нет данных, сохраненных в настраиваемом поле с именем 'excerpt'. – rnevius

+0

просто хотел перезвонить и дать быстрое обновление: это действительно работает.Он следует той же структуре, что и получение поля с другой страницы/сообщения https://www.advancedcustomfields.com/resources/how-to-get-values-from-another-post/ – Dylan

0

У меня такая же проблема с АФК и get_pages().

Попробуйте получить доступ к полям ACF, извлекая все сообщения по типу страницы.

$args = array(
'post_type' => 'page', 
'numberposts' => -1, // Accepts -1 for all. Default 5. 
); 

$pages = get_posts($args); 

Теперь ACF get_field('excerpt'); функция будет работать, потому что get_pages() не возвращает все необходимые данные.

Если вы хотите получить конкретные страницы, например, братья и сестры, вы можете передать их id как get_posts() 'include' аргумент (обр.).

Подробнее о get_posts()in documentation.

Смежные вопросы