WordPress画像アップロード時に保存される画像情報をDBで確認する

WordPressの画像について WordPress

WordPressで画像アップロード時に登録される情報

WordPressで画像をアップロードした場合、2つのテーブルに情報が登録される

wp_posts テーブルに画像パス
postmeta テーブルに画像の代替え文字(alt)

wp_posts テーブルに登録される情報

パラメータ 意味 値の例
ID ID 1501
post_author 投稿者 1
post_date 画像のアップロード日時 2015-02-10 12:07:45
post_date_gmt 画像のアップロード日時Gmt 2015-02-10 3:07:45
post_content 本文 (画像の場合は空白)
post_title 画像のタイトル 1139150245147
post_excerpt 抜粋文 (画像の場合は空白)
post_status 画像の状態 inherit
comment_status open open
ping_status open open
post_password パスワード (設定されていなければ空白)
post_name 画像の名前 1139150245147
to_ping ピン先  
pinged ピンバックした履歴  
post_modified 画像を更新した日時 2015-02-10 12:07:45
post_modified_gmt 画像を更新した日時 2015-02-10 3:07
post_content_filtered 画像の場合は意味なし  
post_parent 親投稿ID 1500(投稿記事のID)
guid 画像のパス(URI) https://test.com/wp-content/uploads/2022/12/110245147.jpg
menu_order 画像の場合は意味なし 0
post_type 種類 attachment
post_mime_type コンテンツタイプ image/jpeg
comment_count コメント数 0

postmeta テーブルに登録される情報

meta_id post_id meta_key meta_value
プラマイリID wp_postsでのID 画像情報のキー 情報
31 13 _wp_attached_file

画像名を置き換える
110245147.jpg 

32 13 _wp_attachment_metadata

画像のメタデータ
※ながいので下に記載

33 13 _wp_attachment_image_alt

画像の代替え文字

WordPressでDB保存された画像に関連する情報

投稿ページ内のメタ情報をみてアイキャッチ画像を探す

postmeta テーブルに登録されているmeta_key

テーマによっては数が増える。_thumbnail_idでアイキャッチ画像のpost_idを指定している。

//Cocoonで 1記事投稿で生成されるmeta_key   値

_edit_lock		1669621837:1
_thumbnail_id		18

アイキャッチのサイズはfunctionで設定されています。

_wp_attachment_metadataについて

_wp_attachment_metadataに保存される画像のシリアライズデータ(メタデータ)
シリアライズデータとは配列やオブジェクトをデータベースに記録する際に使われるデータ形式で、Exif情報とよばれるもの。スマホ撮影の画像には、撮影場所の位置情報やコピーライトが含まれるときがあるので注意する。

//(例)
a:6:{
    s:5:"width";
    i:863;
    s:6:"height";
    i:410;s:4:"file";
    s:17:"2022-11-19-20.png";
    s:8:"filesize";
    i:25735;
    s:5:"sizes";
    a:5:{
      s:8:"thumb100";
      a:5:{
          s:4:"file";s:25:"2022-11-19-20-100x100.png";
          s:5:"width";i:100;
          s:6:"height";i:100;
          s:9:"mime-type";
          s:9:"image/png";
          s:8:"filesize";
          i:5316;
        }s:8:"thumb150";a:5:{
          s:4:"file";s:25:"2022-11-19-20-150x150.png";
          s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:9:"image/png";s:8:"filesize";i:9674;
        }s:8:"thumb120";a:5:{
          s:4:"file";s:24:"2022-11-19-20-120x68.png";
          s:5:"width";i:120;s:6:"height";i:68;s:9:"mime-type";s:9:"image/png";s:8:"filesize";i:4815;
        }s:8:"thumb160";a:5:{
          s:4:"file";s:24:"2022-11-19-20-160x90.png";
          s:5:"width";i:160;s:6:"height";i:90;s:9:"mime-type";s:9:"image/png";s:8:"filesize";i:7242;
        }s:8:"thumb320";a:5:{
          s:4:"file";s:25:"2022-11-19-20-320x180.png";
          s:5:"width";i:320;s:6:"height";i:180;s:9:"mime-type";s:9:"image/png";s:8:"filesize";i:19426;
        }
    }s:10:"image_meta";
  a:12:{
    s:8:"aperture";
    s:1:"0";
    s:6:"credit";s:0:"";
    s:6:"camera";s:0:"";
    s:7:"caption";s:0:"";
    s:17:"created_timestamp";
    s:1:"0";
    s:9:"copyright";s:0:"";
    s:12:"focal_length";
    s:1:"0";
    s:3:"iso";
    s:1:"0";
    s:13:"shutter_speed";
    s:1:"0";
    s:5:"title";s:0:"";
    s:11:"orientation";
    s:1:"0";
    s:8:"keywords";
    a:0:{}
  }
}

投稿ページのalt入力の扱いについて

投稿記事を書く際に画像のaltを記述しないとaltは入力されない。下のコードをfunctuon.phpに追加することで投稿記事のalt=””の場合は_wp_attachment_image_alt文字にするというもの。テーマによっては自動で挿入される。

//-------------------------------------------------------------
// 投稿画像のalt=""のときライブラリのaltを挿入する
//------------------------------------------------------------
function my_set_img_alt_title( $content ) {
	global $wpdb;
	if ( preg_match_all( '/<img [^>]+alt=""[^>]+>/i', $content, $images ) ) {
		foreach( $images[0] as $image ) {
			if ( preg_match( '/src=[\'"]([^\'"]+)[\'"]/i', $image, $src ) ) {
				if ( preg_match( '/([^\/]+?)(-e\d+)?(-\d+x\d+)?(\.\w+)?$/', $src[1], $file ) ) {
					$attachiment_id = (int)$wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_name=%s", $file[1] ) );
					if ( $attachiment_id ) {
						$alt = get_post_meta( $attachiment_id, '_wp_attachment_image_alt', true );
						$replace = str_replace( 'alt=""', 'alt="' . esc_attr( $alt ) . '" ',  $image );
						$content = str_replace( $image, $replace, $content );
					}
				}
			}
		}
	}
	return $content;
}
add_filter( 'the_content', 'my_set_img_alt_title' );
//----------------------------

上のコードが掲載されてる情報サイト

alt属性を自動入力するプラグインについて
サポート » プラグイン » alt属性を自動入力するプラグインについて alt属性を…

タイトルとURLをコピーしました