最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

wordpress抓取文章第一張遠(yuǎn)程圖片保存到本地的方法

  發(fā)布時(shí)間:2014-02-26 15:24:25   作者:佚名   我要評論
在某些項(xiàng)目中,網(wǎng)站允許用戶使用外鏈圖片發(fā)布文章,或者處于某些特殊原因,網(wǎng)站希望抓取文中的第一張遠(yuǎn)程圖片作為特色圖片,并像QQ空間一樣,將這張圖片保存到本地,并插入到數(shù)據(jù)庫中??傊?,完成一系列動(dòng)作之后,網(wǎng)站希望發(fā)現(xiàn)這張?jiān)臼沁h(yuǎn)程外鏈的圖片被放在本地,并成

這個(gè)動(dòng)作我們使用一個(gè)hook來實(shí)現(xiàn):


復(fù)制代碼
代碼如下:

add_action('publish_post', 'fetch_images',999);

再創(chuàng)建一個(gè)fetch_images函數(shù),來實(shí)現(xiàn)本文所說的所有功能。


復(fù)制代碼
代碼如下:

function fetch_images( $post_ID ){
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
if ( !current_user_can('edit_post', $post_ID) ) return;
$post = get_post($post_ID);

接下來,我們要獲取文章內(nèi)容中的第一張圖片:


復(fù)制代碼
代碼如下:

$first_image = '';
preg_match('/<img.+src=[\'\"]([^\'\"]+)[\'\"].* \/>/i',$post->post_content,$images);
if(!empty($images))foreach($images as $image){
if(strpos($image,'http') === 0){
$first_image = $images[1];
break;
}
}

但實(shí)際上,通過上述的代碼獲得的圖片src可能也是有問題的,或者根本沒有抓取到數(shù)據(jù)。不過我們先不考慮這些問題,我們先實(shí)現(xiàn)本文的目標(biāo)。

接下來就是關(guān)鍵代碼一,它要實(shí)現(xiàn)“抓取-保存到本地”兩個(gè)功能:


復(fù)制代碼
代碼如下:

$get = wp_remote_get( $get_image_src );
$type = wp_remote_retrieve_header( $get, 'content-type' );
$file_name = basename($get_image_src);
$file_content = wp_remote_retrieve_body($get);
$mirror = wp_upload_bits($file_name,null,$file_content);

這個(gè)地方有一個(gè)變化,上面我們獲得了$first_image,這個(gè)地方的$get_image_src是上述得到的要抓取的遠(yuǎn)程圖片地址。

在WordPress中,提供了wp_remote_get、wp_remote_retrieve_body等原創(chuàng)抓取和信息獲取函數(shù),你可以查看官方文檔以了解和remote相關(guān)的函數(shù)。wp_upload_bits則將抓取到的圖片的二進(jìn)制內(nèi)容保存到本地,根據(jù)其文件類型,最終成為本地保存的圖片,并將保存完后獲得的本地圖片信息保存在$mirror中。

既然已經(jīng)保存到本地了,接下來就是將圖片信息保存到數(shù)據(jù)庫中。

相關(guān)文章

最新評論

乐山市| 延寿县| 曲阜市| 马公市| 柳州市| 西乌珠穆沁旗| 肇州县| 靖西县| 永清县| 当涂县| 湛江市| 察哈| 六盘水市| 宣城市| 阳谷县| 什邡市| 南川市| 兴安县| 苏尼特右旗| 长顺县| 五寨县| 泊头市| 湟源县| 内江市| 巴里| 房产| 错那县| 县级市| 洛阳市| 拉孜县| 拜城县| 澄迈县| 镇宁| 神农架林区| 醴陵市| 和田市| 遂川县| 循化| 安阳县| 江陵县| 台湾省|