2014-09-04 72 views

回答

7

我用這個涼爽剪斷通過pippinsplugins.com

在添加此功能時,您functions.php文件

// retrieves the attachment ID from the file URL 
function pippin_get_image_id($image_url) { 
    global $wpdb; 
    $attachment = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url)); 
     return $attachment[0]; 
} 

然後在你的頁面或模板使用此代碼來存儲/打印/使用ID:

// set the image url 
$image_url = 'http://yoursite.com/wp-content/uploads/2011/02/14/image_name.jpg'; 

// store the image ID in a var 
$image_id = pippin_get_image_id($image_url); 

// print the id 
echo $image_id; 

原帖在這裏:https://pippinsplugins.com/retrieve-attachment-id-from-image-url/

希望TI幫助;) 弗朗切斯科

+0

這是路徑而不是網址我有,但您的解決方案工作(有小調整)謝謝! – Xaver 2014-09-04 19:00:19

+0

很高興聽到這個;) – FrancescoCarlucci 2014-09-04 19:24:15

12

UPDATE:因爲WP 4.0.0有一個新的功能,可以做的工作。我沒有測試它,但它是這樣的:

https://developer.wordpress.org/reference/functions/attachment_url_to_postid/


遲到的回答:到目前爲止,我已經找到了最好的解決方案有這樣一句:

http://frankiejarrett.com/get-an-attachment-id-by-url-in-wordpress/

我認爲這是最好的有兩個原因:

  • 它確實有些完整性CHEC ks
  • [important!]它是域不可知的。這使得安全的網站移動。對我而言,這是一個關鍵功能。
+0

這應該是被接受的答案。 WordPress函數中使用的方法比依賴guid更強大。閱讀Pippins頁面的評論以瞭解限制。 – Mark 2017-05-24 07:44:07

-1

根據@FrancescoCarlucci的回答,我可以做一些改進。

有時,例如當您在WordPress中編輯圖像時,它會從原始文件創建一個副本,並將副本上傳路徑添加爲後期元(鍵爲_wp_attached_file),這不受答案的限制。

這裏經過優化的查詢,包括這些編輯:

function jfw_get_image_id($file_url) { 
    $file_path = ltrim(str_replace(wp_upload_dir()['baseurl'], '', $file_url), '/'); 

    global $wpdb; 
    $statement = $wpdb->prepare("SELECT `ID` FROM `wp_posts` AS posts JOIN `wp_postmeta` AS meta on meta.`post_id`=posts.`ID` WHERE posts.`guid`='%s' OR (meta.`meta_key`='_wp_attached_file' AND meta.`meta_value` LIKE '%%%s');", 
     $file_url, 
     $file_path); 

    $attachment = $wpdb->get_col($statement); 

    if (count($attachment) < 1) { 
     return false; 
    } 

    return $attachment[0]; 
}