繁体   English   中英

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

[英]Get an ACF custom field from an adjacent post

我正在使用Wordpress插件高级自定义字段

我正在查看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 ,下面返回的全部内容是什么意思?

int(1046)

编辑编辑

好的,所以我对自定义字段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字段是设置为Image ID的图像字段,而不是Advanced Custom Fields中的数组。

通知错误意味着$prevPost不是发布对象,并且如果未设置全局$post或同一类别中没有先前的发布,则可能发生,因此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; ?>

请注意,我还在previous_post_link添加了第三个参数true ,以检索上一文章的链接,但属于同一类别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM