使用 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。
我正在使用以下代码显示同级页面列表。以及检索页面标题和 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。