Skip to content

Instantly share code, notes, and snippets.

@minodisk
Forked from fumikito/detect_attachment_id.php
Created September 4, 2012 03:58
  • Star 9 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save minodisk/3616372 to your computer and use it in GitHub Desktop.
WordPressで画像のURLからアタッチメントIDを取得する
<?php
/**
* 画像のURLのサイズ違いのURLを取得する
*
* @param string $url 画像のURL
* @param string $size 画像のサイズ (thumbnail, medium, large or full)
*/
function get_attachment_image_src($url, $size) {
$image = wp_get_attachment_image_src(get_attachment_id($url), $size);
return $image[0];
}
/**
* 画像のURLからattachemnt_idを取得する
*
* @param string $url 画像のURL
* @return int attachment_id
*/
function get_attachment_id($url)
{
global $wpdb;
$sql = "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s";
preg_match('/([^\/]+?)(-e\d+)?(-\d+x\d+)?(\.\w+)?$/', $url, $matches);
$post_name = $matches[1];
return (int)$wpdb->get_var($wpdb->prepare($sql, $post_name));
}
?>
@minodisk
Copy link
Author

minodisk commented Sep 4, 2012

  1. 管理画面でリサイズしたら取得できなかった問題を解決
  2. 管理画面でリサイズすると [画像名]-e000000-000x000[.拡張子]というフォーマットで保存される
  3. -e000000部分はレコードには保存されていない(-000x000のサイズ部分と同じ扱いらしい)
  4. -e000000部分と-000x000部分と拡張子部分を削除したfilenameがpost_nameに該当するぽいのでこれで検索をしている
  5. ついでにリサイズした画像のURLを取得する関数を追加

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment