从相邻的帖子获取ACF自定义字段

时间:2015-04-18 16:13:18

标签: php wordpress advanced-custom-fields

我正在使用Wordpress插件Advanced Custom Fields

我正在查看自定义帖子类型的single.php页面。在页面底部,我想显示显示附带图像的下一个和上一个帖子链接。此图像值是ACF自定义字段。如何通过链接获取并显示下一个/上一个帖子图像?

目前我的破解代码显示了我正在查看的页面的图像:

<?php 

    $size = "medium";

    $prevPost = get_previous_post(true); 

    $prevThumbnail = get_field('bg_image', $prevPost->ID); 
    $bgimage = wp_get_attachment_image_src( $prevThumbnail, $size );

?>

    <img src="<?php echo $bgimage[0]; ?>" />
    <?php previous_post_link( '<strong>%link</strong>' ); ?>

修改

根据@ d79的评论,我已经完成了$prevThumbnail的vardump,所有返回的内容如下所示,这是什么意思?

int(1046)

编辑编辑

好的,所以我在自定义字段bg_image上做了一个vardump,我得到了相同的数字:

int(1046)

但是,在打开wp_config中的调试后,我也收到以下错误:

Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/bao-agency/wp-content/themes/bao/single-work.php on line 19

这是指这一行:

$prevThumbnail = get_field('bg_image', $prevPost->ID);

bg_image字段是设置为图像ID的图像字段,而不是高级自定义字段中的数组。

1 个答案:

答案 0 :(得分:3)

通知错误意味着$prevPost不是帖子对象,并且如果未设置全局$post或者同一类别中没有先前帖子,则会发生这种情况,因此{{1失败并检索当前帖子的图像。

为避免您需要检查get_field('bg_image', $prevPost->ID)是否为对象:

$prevPost

请注意,我还向<?php global $post; $prevPost = get_previous_post(true); if( is_object($prevPost) ): $prevThumbnail = get_field('bg_image', $prevPost->ID); $bgimage = wp_get_attachment_image_src( $prevThumbnail, 'medium' ); ?> <?php if($bgimage): ?> <img src="<?php echo $bgimage[0]; ?>" /> <?php endif; ?> <?php previous_post_link( '<strong>%link</strong>', '%title', true ); ?> <?php endif; ?> 添加了第三个参数true,以检索上一篇文章的链接但属于同一类别。