WordPress的图片上传,默认的都是从本地上传,但如果想从远程抓取,或是通过远程地址获取的话,就要用到wp_upload_bits。

wp_upload_bits介绍:

用法

<?php wp_upload_bits( $name, $deprecated, $bits, $time ) ?>

参数

$name

(string) (required)

Default: None

$deprecated

(null) (required) Not used. Set to null.

Default: None

$bits

(mixed) (required) File content

Default: None

$time

(string) (optional) Time formatted in ‘yyyy/mm’.

Default: null

返回值

返回array值

file

文件上传路径 (e.g. /var/www/wordpress/wp-content/uploads/2010/03/example.pdf)

url

文件上传完整路径 (e.g. http://example.com/wp-content/uploads/2010/03/example.pdf)

error

如果产生错误,就返回,否则返回false

实现上传代码片段

$get = wp_remote_get( $_POST[‘url’] );

//$_POST[‘url’]获取到的附件地址

$file_content = wp_remote_retrieve_body($get);

$uploaded_file = wp_upload_bits($file_name,null,$file_content);

$wp_filetype = wp_check_filetype( basename( $uploaded_file[‘file’] ), null );

$attachment = array(

‘post_mime_type’ => $wp_filetype[‘type’],

‘post_title’ => basename($file_name),

‘post_author’ => $logged_in_user,

‘post_content’ => ”,

‘post_status’ => ‘inherit’,

‘post_type’ => ‘attachment’,

‘post_parent’ => $_POST[‘post_id’],

‘guid’ => $uploaded_file[‘url’],

);

$attachment_id = wp_insert_post( $attachment );

会员评论