2015-03-19 50 views
0

我是C#程序員 - 但正在嘗試進入PHP。將精選圖片設置爲特定網址,而不是文件名

我正在使用插件將亞馬遜產品導入網站。

但是,我的主機阻止我導入圖像 - 通常將其用作特色圖像。

下面的代碼在嘗試導入圖像時設置了精選圖像。

我怎樣才能改變它設置特色圖像,但使用的完整URL原來亞馬遜圖像鏈接(我想這是$ IMAGE_URL):

function set_featured_image($post_id, $image_url){ 
    require_once(ABSPATH . "wp-admin" . '/includes/image.php'); 
    require_once(ABSPATH . "wp-admin" . '/includes/file.php'); 
    require_once(ABSPATH . "wp-admin" . '/includes/media.php'); 

    $upload_dir = wp_upload_dir(); 
    $image_data = file_get_contents($image_url); 
    $filename = basename($image_url); 

    $filename_ar = explode('.', $filename); 
    $filename = sanitize_file_name($filename_ar[0]).'.'.$filename_ar[1]; 
    if(wp_mkdir_p($upload_dir['path'])) 
     $file = $upload_dir['path'] . '/' . $filename; 
    else 
     $file = $upload_dir['basedir'] . '/' . $filename; 
    file_put_contents($file, $image_data); 

    $wp_filetype = wp_check_filetype($filename, null); 
    $attachment = array(
     'post_mime_type' => $wp_filetype['type'], 
     'post_title' => sanitize_file_name($filename), 
     'post_content' => '', 
     'post_status' => 'inherit' 
    ); 
    $attach_id = wp_insert_attachment($attachment, $file, $post_id); 
    require_once(ABSPATH . 'wp-admin/includes/image.php'); 
    $attach_data = wp_generate_attachment_metadata($attach_id, $file); 
    wp_update_attachment_metadata($attach_id, $attach_data); 

    set_post_thumbnail($post_id, $attach_id); 

} 

還是我必須手動導入圖像和鏈接到本地​​?

感謝您的幫助,

馬克

回答

0

是否考慮熱鏈接的圖像的選項?防止它在您的網站上佔用帶寬和存儲空間,並避免需要獲取和存儲本地圖像副本的問題。

+0

嗨 - 你的意思是直接鏈接到亞馬遜的形象,例如。 http://amazon/images/myimage.jpg?如果是這樣,那就是我要做的 - 但我不知道如何更改上面的代碼,以使用圖像的URL,而不是本地文件名。謝謝,Mark – Mark 2015-03-19 09:53:43

+0

是的,這就是我的意思。我還沒有深入研究過使用WordPress插件,但是應該已經有一些東西可以爲你做我想象中的事情了。 我剛剛發現這個:http://wordpress.org/plugins/external-featured-image/或許你甚至可以看看這段代碼,看看它是如何做到的,並根據你的需要進行調整。 – Leprichaun 2015-03-19 09:59:25

+0

嗨 - 是的,那會做這項工作 - 但我仍然必須手動修改每篇文章。我一次使用的插件導入50個產品 - 我希望只是改變上面的代碼,以設置特色圖像使用完整的URL $ image_url亞馬遜圖像。謝謝,馬克 – Mark 2015-03-19 10:06:45

相關問題