我知道文件的路徑,我喜歡獲取附件ID。在WordPress中通過文件路徑獲取附件ID
有一個功能wp_get_attachment_url()
這需要ID來獲取URL,但我需要它反轉(儘管與不路徑URL)
我知道文件的路徑,我喜歡獲取附件ID。在WordPress中通過文件路徑獲取附件ID
有一個功能wp_get_attachment_url()
這需要ID來獲取URL,但我需要它反轉(儘管與不路徑URL)
我用這個涼爽剪斷通過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幫助;) 弗朗切斯科
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/
我認爲這是最好的有兩個原因:
這應該是被接受的答案。 WordPress函數中使用的方法比依賴guid更強大。閱讀Pippins頁面的評論以瞭解限制。 – Mark 2017-05-24 07:44:07
根據@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];
}
這是路徑而不是網址我有,但您的解決方案工作(有小調整)謝謝! – Xaver 2014-09-04 19:00:19
很高興聽到這個;) – FrancescoCarlucci 2014-09-04 19:24:15