2011-03-30 113 views
0

我正在使用自定義字段來選擇圖片的網址。基於網址的wordpress圖片大小

我的客戶端正在插入並上傳所有圖片,因此這需要非常簡單。這就是爲什麼我試圖在幕後處理它。

我遇到的問題是我在全尺寸圖像的網址中確實減慢了加載時間。

有沒有辦法根據完整大小的網址插入縮略圖或其他圖片大小?

我試過這種工作方式,但我遇到的問題是一些圖像沒有相同的牙列,所以這需要做更多的動態。

<? $reduceimage = str_replace('.jpg', '-330x220.jpg' , $defaultimage); ?> 
+0

如何動態這是否必要呢?你有一個特定的寬度,你需要修剪圖像? '-330x220.jpg'是否會使用一些WP魔術自動將圖像變成縮略圖?你可以使用/你知道圖像的文件系統路徑嗎? – 2011-03-30 15:42:30

+0

我有絕對的網址,以全尺寸的圖像。我的問題是我正在尋找顯示最大寬度爲330和最大高度爲220的中等大小的圖像。問題是這些圖像中的某些在上傳/調整大小時未達到最大寬度或高度,由wordpress根據圖像方面的無線電。例如,很多圖像是330x220,但其他圖像的中等大小 - 330×247。 – Adam 2011-03-30 15:54:16

+0

在這些情況下您想要發生什麼?沒有調整大小? – 2011-03-30 16:03:21

回答

0

我認爲這是最好的依靠WordPress的本地wp_get_attachment_image_src()函數來獲取圖像的大小不同。但要這樣做,你需要附件ID,而不是網址。 功能的URL轉換爲ID:

function fjarrett_get_attachment_id_by_url($url) { 

    // Split the $url into two parts with the wp-content directory as the separator 
    $parsed_url = explode(parse_url(WP_CONTENT_URL, PHP_URL_PATH), $url); 

    // Get the host of the current site and the host of the $url, ignoring www 
    $this_host = str_ireplace('www.', '', parse_url(home_url(), PHP_URL_HOST)); 
    $file_host = str_ireplace('www.', '', parse_url($url, PHP_URL_HOST)); 

    // Return nothing if there aren't any $url parts or if the current host and $url host do not match 
    if (! isset($parsed_url[1]) || empty($parsed_url[1]) || ($this_host != $file_host)) { 
     return; 
    } 

    // Now we're going to quickly search the DB for any attachment GUID with a partial path match 

    // Example: /uploads/2013/05/test-image.jpg 
    global $wpdb; 
    $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->prefix}posts WHERE guid RLIKE %s;", $parsed_url[1])); 

    // Returns null if no attachment is found 
    return $attachment[0]; 
} 

感謝Frankie Jarrett

然後你就可以輕鬆地獲得其他尺寸:

$medium_image = wp_get_attachment_image_src(fjarrett_get_attachment_id_by_url($image_link), 'medium'); 

如果從這一形象需要鏈接:

$medium_image_link = $medium_image[0]; 
$html = '<img src="'.$medium_image_link.'" alt="" />';