我在一个函数中工作,有点链接:
function just_in_case_featured($size) {
global $post;
$plan_b_featured_url = [];
$featured_image_url = get_the_post_thumbnail_url($post->ID, $size);
$attachments = get_posts(array(
'post_status' => 'publish',
'post_type' => 'attachment',
'numberpost' => 1,
'post_parent' => $post->ID
));
if ($featured_image_url) {
return $featured_image_url;
} else if ($attachments ) {
$plan_b_featured_url = $attachments[0]->guid;
return $plan_b_featured_url;
} else {
return false;
}
}
此功能用于返回帖子的附件数组的第一张图片,以防帖子缺少精选图片。
有两个问题:
当我从帖子中删除图片时,该附件在wp_post表中仍然具有相同的post_parent,并且这很糟糕,因为您可能将该图像包含在另一个帖子中,并且无法将其与新的相关联发布,因为它将旧的post_parent值保留在db。此外,如果您在没有Feat的内容中包含图像。它运行的图像,但随后你将其删除并且图像不断被返回,因为在数据库中图像的inicial post_parent值仍然存在。
附件有'继承'值为post_status,因为它们从post_parent继承它们的状态。问题是我无法使用上面的功能加载图像(它使用标准格式,问题似乎与音频格式的帖子),除非我手动编辑数据库和更改继承发布(帖子肯定发布),一旦我将该版本发布到db然后我可以检索它。奇怪的是,如果我var_dump get_post_status($ attachment_ID)它返回发布!! &gt ;-(因此,继承属性正在运行但由于某种原因附件未被返回。
答案 0 :(得分:0)
好的,已解决 第二个问题 ,如下所示:
function just_in_case_featured($size) {
global $post;
$attachments = get_posts(array(
'post_type' => 'attachment',
'post_parent' => get_the_ID(),
'post_per_page' => 1
));
if (has_post_thumbnail()) {
$featured_image = get_the_post_thumbnail_url( $post->ID , $size );
} else if ($attachments) {
foreach ($attachments as $attachment) {
$featured_image = wp_get_attachment_url( $attachment->ID );
}
} else {
$featured_image = false;
}
return $featured_image;
}
第一个问题仍然存在,更多是结构性wordpress的东西,我知道你可以手动分离管理面板中的图像,但问题是为什么我必须这样做。
要指出的其他事项:get_the_post_thumbnail_url()
的第一个参数(通常为$post->ID
被记录为可选,在许多情况下只是不是和函数,即使不是&# 39;导致错误无法正常工作。