从相邻 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,但属于同一类别。
我正在使用 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,但属于同一类别。