使用 get_pages() 获取 ACF 字段

Get a ACF field using get_pages()

我正在使用以下代码显示同级页面列表。以及检索页面标题和 link。我需要获取一个名为 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); ?>,它返回了以下内容:

我在这里没有看到任何 ACF 字段,那么如何检索这些字段?我的下一步是什么?

您应该在 您的 forloop 中使用 the_field(),或 echo get_field(),并且应该将 post 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

你的完整代码如下:

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

}

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

我在 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() 没有 return 所有需要的数据。

如果您想获取特定页面,例如兄弟姐妹,您可以将他们的 ID 作为 get_posts() 'include' 参数 (arr) 传递。

详细了解 get_posts() in documentation