基于当前自定义域为所有帖子创建新自定义域

时间:2012-12-07 作者:Pollux Khafra

我有一个用于大量帖子的自定义字段,其中包含youtube视频的url。我曾经从视频中抓取ID并用它来构建拇指,但在新版本中,我实际上使用download\\u url()从youtube自定义构建的拇指图像url,并将其下载到我的服务器。因此,我必须对数据库中的所有帖子执行此操作,但需要一种方法,而不是手动处理每个帖子。

因此,我为每个帖子都有一个自定义字段video_code 等于视频的url。

因此,我需要对特定post\\u类型的所有帖子执行类似操作。。

        require_once(ABSPATH . "wp-admin" . \'/includes/image.php\');
        require_once(ABSPATH . "wp-admin" . \'/includes/file.php\');
        require_once(ABSPATH . "wp-admin" . \'/includes/media.php\');

$video_code = get_post_meta($post->ID,\'video_code\',true);
$video_id = getVideoId($video_code); // getVideoId is a custom function
if ($video_id) {
     $video_image_url = \'http://img.youtube.com/vi/\'.$video_id.\'/hqdefault.jpg\';
     ut$tmp = download_url($video_image_url);
     $file_array = array(
                \'name\' => basename( $video_image_url ),
                \'tmp_name\' => $tmp
              );

}
$vid_thumb = media_handle_sideload( $file_array, $post_id );
update_post_meta($post_id,\'video_thumb\',$vid_thumb);
有什么想法吗?

1 个回复
最合适的回答,由SO网友:developdaly 整理而成

这将点燃init 所以你只需要刷新一次页面就可以了。我遗漏了$new_value -- 你需要定义一下。

<?php
add_action( \'init\', \'wpse_75308_update_video_meta\' );

function wpse_75308_update_video_meta() {
    // Get all posts
    $posts = get_posts( array( \'numberposts\' => -1 );

    // Loop through each and update the custom field where it exists
    foreach( $posts as $post ) {
        update_post_meta( $post-ID, \'video_thumb\', $new_value );
    }
}

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在