画像ファイルをアップロードするとき、自動でファイル名を記事IDに変更する。
記事の投稿ページ画面(ブロックエディタ&クラシックエディタ)から画像をアップロードして挿入する場合等に一々画像のファイル名を変更するのは面倒である。そんなときページに画像をドロップした時、自動的に変換してくれると非常に便利である。
変更は自己責任で!
目次
functions.phpにコードを作成する
以下をfunctions.phpに貼り付ける。
このコードを入れると画像をアップロード時「img46.png」のように46というようなID番号を取得して自動的に入れてくれるようになる。
function rename_file($filename) {
global $filename_new;
// 記事ID取得 (クラシックエディタ)
$post_id = isset( $_POST['post_id'] ) ? (int)$_POST['post_id'] : '';
// 記事ID取得 (ブロックエディタ)
if( !$post_id ){
$post_id = isset( $_POST['post'] ) ? (int)$_POST['post'] : '';
}
// ファイル拡張子を取得、jpgとかpngとか
$ext = pathinfo( $filename, PATHINFO_EXTENSION );
// 投稿、固定ページのIDをファイル名とする
if( $post_id ){
$filename_new = $post_id;
// メディアライブラリへ直接アップロードした場合のファイル名(日付時刻を取得)
}else{
$filename_new = date_i18n('ymdHi');
}
//ファイル名+拡張子を出力
return 'img'.$filename_new.'.'.$ext;
}
add_filter('sanitize_file_name', 'rename_file', 10);パーマリンクを投稿にしたときで検証した(どれを選んでも同じ結果になる)
これはパーマリンクを「投稿名」にしたときにどうなるかを検証。

イメージライブラリにはどのように表示されるのか
画像のファイル名がIDの46という数字で表示されるようになる。
同じページで追加した順番で46から46-1、46-2というように後ろに数字が追加されていく。
非常に簡潔に表示され、ページのIDになるのでファイル名が重なることが無い。
頭にimgが入っていないが、実際は上のコードを使うと入る。

このIDは投稿ページのどこに表示されるのかを知りたい
このページのIDがわかれば、画像との関連性がわかるようになると思う。
普段は別にそれがわからなくても、何の問題も無いが、いざトラブルが起きたとき画像とページの関連性がわかると解決しやすいかもしれないと思った。
以下のようにパーマリンクを「投稿名」にしているのでサイトのURLでは ID は表示されない。
サイトURLの例:https://サイトURL/画像アップロード時に自動的にファイル名を/
それでも上の画像のようにファイル名にIDが付与されるので、どこかにIDが存在することになる。
それは、編集画面を開くと確認できる。
投稿ページの編集画面のURLに「post=46」とファイル名と同じID名が表示されている。
編集画面URLの例:https://サイトURL/wp-admin/post.php?post=46&action=edit
このID名がファイルに付与されるのがわかった。
このID名で画像が入ったページを検索できるのか?
IDを調べて直接特定のページを見つけるだけであれば、URLに直接入力する方が一番早い。
ブラウザのURL欄に以下のように入力。https://あなたのサイトURL/wp-admin/post.php?post=46&action=edit
(46の部分を調べたいIDに変更)
「Show Pages ID」などのプラグインを使う、これが一番簡単

このプラグインを使うと一覧画面に「ID」列が追加され一目で分かるようになので、最終的にはこれが一番の選択肢にになる。 探すのも分かりやすいしIDの管理の面でも便利になる。
但し、このIDが付与された画像は他のページには使い回しすることが出来ないということになる。
全く出来ないということは無いが、万一画像を変更した場合、別のページにも影響することになるので、必ず一度ダウンロードして再度アップロードして、新しいページのIDを取得し直した方が良いと思う。

