根据自定义字段将图像上载到媒体库

时间:2013-05-19 22:35:54

标签: wordpress curl upload media

我刚刚从自定义构建的网站迁移过来。因为我不完全确定我在做什么,所以我创建了一个名为featured_image的自定义字段,并在其中为每个帖子的图像添加了一个URL。

现在

有没有办法,我可以遍历我的所有帖子,并从自定义字段中的网址生成缩略图/精选图片?

希望有意义!

更多信息。

我已经移动了7000个帖子,每个帖子都有一个自定义字段,其中包含一个图像。我想把这些网址带到相关帖子的精选图片中。

我有一个插件,可以拍摄帖子中的第一张图片,并在我重新发布时,但这对7000来说可能不实用!

由于

2 个答案:

答案 0 :(得分:2)

好的,我通过黑客攻击另一个插件找到了答案。

首先,我循环遍历postmeta表

$postid_list = $wpdb->get_results("SELECT distinct post_id FROM yars_postmeta WHERE meta_key='featured_image' ORDER BY post_id DESC LIMIT 10");
        if (!$postid_list){
                die('No posts with images were found.');
        }
        foreach ($postid_list as $v) {
            $post_id = $v->post_id;
            //$options['url_method'] = $url_method;
            echo fig_fetch_images($post_id).'<br/>';
        }

然后在一个函数中,我获取图像,然后将其上传到媒体库,并为帖子ID设置特色图像

function fig_fetch_images( $post_id ) { 
global $wpdb;
//Check to make sure function is not executed more than once on save

if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) 
return;

if ( !current_user_can('edit_post', $post_id) ) 
return;

remove_action('publish_post', 'fetch_images');  

//$post = get_post($post_id);   
$first_image = '';
$key = 'featured_image';
$first_image = get_post_meta($post_id, $key, true);
$wpdb->query("update yars_postmeta set meta_key ='featured_image_uploaded'WHERE meta_key='featured_image' AND post_id=".$post_id);

if (strpos($first_image,$_SERVER['HTTP_HOST'])===false) {

    //Fetch and Store the Image 

    $get = wp_remote_get( $first_image );

    $type = wp_remote_retrieve_header( $get, 'content-type' );

    $mirror = wp_upload_bits(rawurldecode(basename( $first_image )), '', wp_remote_retrieve_body( $get ) );


    //Attachment options

    $attachment = array(

    'post_title'=> basename( $first_image ),

    'post_mime_type' => $type

    );

    // Add the image to your media library and set as featured image

    $attach_id = wp_insert_attachment( $attachment, $mirror['file'], $post_id );

    $attach_data = wp_generate_attachment_metadata( $attach_id, $first_image );

    wp_update_attachment_metadata( $attach_id, $attach_data );

    set_post_thumbnail( $post_id, $attach_id );


    // re-hook this function

    add_action('publish_post', 'fetch_images');     

}
return ('Done post '. $post_id .' : '. $first_image);

}

原始插件是Hotlink Image Cacher!

答案 1 :(得分:0)

我认为你应该解释一下。在single.php的内部循环中,你有一个将自定义字段作为HTML图像标记返回的函数吗?如果是这样,有插件会自动生成帖子中的第一个图像或任何自定义帖子类型的后缩略图(特色缩略图)。

其次,如果您的网站中仍然没有太多帖子,我认为添加文本自定义字段(包含图片网址)并不是最佳方法,因为您可以创建自定义字段,如果内置默认特色图像字段是不够的。

但请先回答我们。您将在何处以及如何使用缩略图? (使用代码解释更多)。它会更好,以便您从社区获得更多帮助。

祝你好运,问候