使用get_pages()获取ACF字段

时间:2015-09-21 10:45:14

标签: wordpress advanced-custom-fields

我正在使用以下代码显示兄弟页面列表。以及检索页面标题和链接。我需要获取一个名为excerpt的自定义字段,并为每个兄弟项输出它。如何使用get_pages执行此操作?目前我正在使用的var_dump是抓取当前页面的摘录,这是不正确的。

<?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;

    }

更新

好的,所以我按照建议放入<?php print_r($page_item); ?>,并返回以下内容:

enter image description here

我在这里看不到任何ACF字段,所以如何检索这些字段?我接下来的步骤是什么?

3 个答案:

答案 0 :(得分:1)

您应该在的forloop中使用the_field()echo get_field(),并且应将帖子ID作为该函数的第二个参数传递:

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

答案 1 :(得分: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;

}

如果您没有获得上述数据,请使用任何其他名称更改自定义文件名,然后尝试。

答案 2 :(得分:0)

我遇到了与AFC和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'参数(arr)传递。

详细了解get_posts() in documentation