从相邻 post 获取 ACF 自定义字段

Get an ACF custom field from an adjacent post

我正在使用 Wordpress 插件 Advanced Custom Fields

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

目前我下面的损坏代码显示了我正在查看的页面的图像:

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

编辑编辑

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

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 的图像字段,而不是高级自定义字段中的数组。

通知错误意味着 $prevPost 不是 post 对象,如果未设置全局 $post 或没有先前的 post,就会发生这种情况] 在同一类别中,因此 get_field('bg_image', $prevPost->ID) 失败并检索当前 post 的图像。

为了避免这种情况,您需要检查 $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; ?>

请注意,我还向 previous_post_link 添加了第三个参数 true 以检索前一个 post 的 link,但属于同一类别。