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

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

最佳答案

通知错误意味着 $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,以检索上一篇文章的链接,但属于同一类别。

关于php - 从相邻帖子获取 ACF 自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29719730/

相关文章:

html - 删除社交菜单页脚

php - 最近的解析错误 : syntax error, 意外 'endif' (T_ENDIF)

javascript - 从 ACF 中继器字段传递单个 PHP 值

php - 如何使用ajax在LARAVEL中获取新的CSRF token

php - PHP中是否有类似于VB中的Option Explicit的东西

jquery - 从 WordPress 图像 URL 中删除图像宽度和高度

mysql - 将 WordPress 元数据导入并转换为 ACF 中继器字段

wordpress - 如何更新 ACF 中转发器字段内的克隆字段?

php - 如何重写 url domain.com/?id=123456 => domain.com/123456/

php - 如何测试 composer.lock 是否是最新的?