我需要将图片自定义字段'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我的所有数据,我认为一切都应该有效,但事实并非如此。
我哪里错了?
答案 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
并查看如何获取该错误。
希望这有帮助!