附件未通过get_posts返回

时间:2018-04-11 04:33:57

标签: wordpress attachment

我在一个函数中工作,有点链接:

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;
    }
}

此功能用于返回帖子的附件数组的第一张图片,以防帖子缺少精选图片。

有两个问题:

  1. 当我从帖子中删除图片时,该附件在wp_post表中仍然具有相同的post_parent,并且这很糟糕,因为您可能将该图像包含在另一个帖子中,并且无法将其与新的相关联发布,因为它将旧的post_parent值保留在db。此外,如果您在没有Feat的内容中包含图像。它运行的图像,但随后你将其删除并且图像不断被返回,因为在数据库中图像的inicial post_parent值仍然存在。

  2. 附件有'继承'值为post_status,因为它们从post_parent继承它们的状态。问题是我无法使用上面的功能加载图像(它使用标准格式,问题似乎与音频格式的帖子),除非我手动编辑数据库和更改继承发布(帖子肯定发布),一旦我将该版本发布到db然后我可以检索它。奇怪的是,如果我var_dump get_post_status($ attachment_ID)它返回发布!! &gt ;-(因此,继承属性正在运行但由于某种原因附件未被返回。

1 个答案:

答案 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;导致错误无法正常工作。