我正在一个投资组合网站上工作。每当点击公文包文章时,用户就会进入一个页面,显示该文章的详细信息(即更多照片和信息)。还将有上一个和下一个导航链接,以获取其他部分。但是,我希望上一个和下一个导航链接是下一个片段的缩略图(自定义字段为thumbnail_photo)。这就是我目前所拥有的:
<?php
$previous_post = get_previous_post();
$next_post = get_next_post();
$prev_value = get_post_meta( $previous_post->ID, 'materials', $single = true);
$next_value = get_post_meta( $next_post->ID, 'thumbnail_photo', $single = true);
?>
<p><?php echo $prev_value; ?></p>
<p><?php echo $next_value; ?></p>
我在$prev_value的调用中使用了"materials",因为"material"是另一个自定义字段。我只是想看看它是否真的有效。它输出的材质很好,但只输出thumbnail_photo的ID号。我无法让它引用文件名,这样我就可以输出实际的图像。
我使用的是高级自定义字段插件,所以每个图像都存储为一个图像对象。这就是我通常输出缩略图的方式:
<?php
$image = get_field('thumbnail_photo);
echo $image[sizes]["thumbnail"]; // thumbnail is a reference to wordpress' thumbnail media size
?>
配置ACF输入字段时,请确保将返回值设置为图像对象,而不是更改后的映像ID;或者,如果您已经更改,则必须更新您试图获取的一个或多个帖子。因为,如果你将字段返回值设置为图像ID,创建了帖子,现在你想更改它们的值,你必须修改所有帖子,因为每个post_meta都包含图像的ID。
ACF网站上有一个教程,介绍如何将值转化为图像:
使用ID
<?php
wp_get_attachment_image( $next_value, 'thumbnail' );
?>
另一个例子对于ID,但这次您必须创建图像HTML,该函数返回一个包含url、宽度和高度的数组
<?php
$image = wp_get_attachment_image_src( $next_value, 'thumbnail' );
// url = $image[0];
// width = $image[1];
// height = $image[2];
?>
<img src="<?php echo $image[0]; ?>" />
您可以检查返回的值,然后写入图像,例如:
<?php
if( is_int( $next_value ) ) {
wp_get_attachment_image( $next_value, 'thumbnail');
} elseif ( is_object( $next_value ) ) {
echo $next_value['sizes']['thumbnail'];
} else { ?>
<img src="<?php the_field('field_name'); ?>" alt="" />
<?php } ?>
我没有测试它,但我认为它运行良好。
我希望这能有所帮助,并为糟糕的英语感到抱歉