我正在使用以下代码显示兄弟页面列表。以及检索页面标题和链接。我需要获取一个名为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字段,所以如何检索这些字段?我接下来的步骤是什么?
答案 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。