2013-05-19 122 views
2

我剛剛從自定義構建的網站遷移。由於我並不完全確定自己在做什麼,因此我創建了一個名爲featured_image的自定義字段,併爲每個帖子在其中爲圖像添加一個URL。根據自定義字段將圖像上傳到媒體庫

現在。

有沒有辦法,我可以遍歷我的所有帖子,並從自定義字段中的URL生成縮略圖/精選圖片?

希望有道理!

更多信息。

我已經移動了7000個帖子,每個帖子都有一個自定義字段,其中包含一個單一網址。我想採取這些網址,並將其製作爲相關帖子的精選圖片。

我有一個插件,可以在文章中發佈第一張圖片,當我重新發布時,但對7000人來說可能並不實用!

謝謝

+0

WordPress已經啓用了特色圖像功能,您只需要設置它。 –

回答

0

我想你應該多解釋一下。你有,在single.php循環內,一個函數返回自定義字段作爲HTML圖像標記?如果是這樣,有插件會自動生成帖子或任何自定義帖子類型中第一張圖片的張貼縮略圖(精選縮略圖)。第二,如果您的網站中沒有太多帖子,我認爲添加一個文本自定義字段(其中包含圖片網址)並不是最好的方法,因爲您可以創建自定義字段,以響應保存圖片if內置的默認精選圖像字段是不夠的。

但請首先回答我們。你在哪裏以及如何使用縮略圖? (使用代碼解釋更多)。這會更好,讓你從社區獲得更多幫助。

祝你好運,視

+0

Hi.Sadly我不能解釋使用的代碼,因爲我不知道該怎麼把!我不是一個很大的PHP傢伙。但是,我添加了更多詳細信息 – Andrzej

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!

+0

嘿,我處於同樣的情況,我可以看到'FROM yars_postmeta WHERE meta_key ='featured_image''它是什麼'yars_postmeta'? –

+0

Yars_postmeta實際上對你來說會有所不同,我沒有意識到當我發佈這個前綴時可以通過程序找到。你的可能是像數據庫中的wp_postmeta。你用$ wpdb->前綴獲得前綴 – Andrzej

相關問題