Wordpress - 将自定义字段图像设置为所有帖子的精选图像

时间:2017-03-09 13:34:00

标签: wordpress image thumbnails custom-post-type custom-fields

我需要将图片自定义字段'blog_image'设置为我所有自定义帖子(blog)的精选图片。帖子太多了,手动很难。我已经搜索了谷歌2天,但我找不到合适的解决方案。

以下是functions.php

的代码
// get all posts from blog
$query = new WP_Query(
    array(
    'post_type' => 'blog',
    'posts_per_page' => -1,
    )
);
$all_posts = $query->posts;
foreach ($all_posts as $one_post)
{
    $value = get_field('blog_image', $one_post->ID);

    if ($value != '')
    {
     $thumbnail_id = $value->id;
     update_post_meta($one_post->ID, '_thumbnail_id', $thumbnail_id);
    }
}

我有var_dumped和print_r我的所有数据,我认为一切都应该有效,但事实并非如此。
我哪里错了?

1 个答案:

答案 0 :(得分:0)

  

您应该只在_thumbnail_id中保存缩略图ID /图像ID;   您要将其设置为blog post_type帖子的精选图片。   WordPress使用此ID显示特色图片。

正如您所说blog_image字段返回一个数组,因此您必须从该数组中提取缩略图ID,然后将其存储到_thumbnail_id post_meta。

你的代码看起来像这样:

//...
//...
foreach ($all_posts as $one_post)
{
    $value = get_field('blog_image', $one_post->ID); //it return an array with all the image data

    if ($value != '')
    {
//      echo '<pre>';
//      print_r($value);
//      echo '</pre>';
        //extracting the thumbnail ID from an array
        $thumbnail_id = $value->ID;
        update_post_meta($one_post->ID, '_thumbnail_id', $thumbnail_id);
    }
}

请注意:如果您收到错误或$thumbnail_id未返回ID,请取消注释print_r并查看如何获取该错误。

希望这有帮助!