LoginSignup
0
0

More than 3 years have passed since last update.

【WordPress】画像のアップロード時にファイル名を記事IDに変更する

Last updated at Posted at 2020-10-25

説明

WordPressの投稿画面から画像をアップロードする際、画像のファイル名を記事IDに合わせて自動で変更します。

ご注意

・記事の投稿画面(ブロックエディタ、クラシックエディタ)から画像をアップロードして挿入する場合のみ動作確認済みです。
・メディアライブラリへ直接アップロードする場合、画像ファイル名は変更されますが、メディアタイトルとして元のファイル名が残ります。
・変更は自己責任でお願いいたします。

コード

以下をfunctions.phpに貼り付けてください。

funtions.php
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'] : ''; 
    }

    // ファイル拡張子を取得
    $ext = pathinfo( $filename, PATHINFO_EXTENSION );   

    // 記事IDをファイル名とする
    if( $post_id ){
        $filename_new = $post_id;

    // メディアライブラリへ直接アップロードした場合のファイル名(日付時刻)
    }else{
        $filename_new = date_i18n('ymdHi');
    }
    //ファイル名+拡張子を出力
    return $filename_new.'.'.$ext;
}

add_filter('sanitize_file_name', 'rename_file', 10);

参考:ねんでぶろぐ

日本語名の画像ファイルアップロード時、ファイル名を英数字に変更する(ブロックエディタ対応)
https://nendeb.com/815

クラシックエディタを使った場合、ファイル名の変更はされますが、メディアタイトルとして元のファイル名が残ってしまうようです。
対策として、以下のコードを追加してタイトルの設定をします。

funtions.php
function rename_media_title($response, $attachment, $meta){
    global $filename_new;
    //変更後のファイル名をメディアタイトルに使用
    $response['title'] = $filename_new;
    return $response;
}
add_filter('wp_prepare_attachment_for_js', 'rename_media_title', 10, 3);

参考:わんどのweb

WordPressで画像のtitle属性の初期値を変更する | わんどのweb
https://wandonoweb.com/wordpress%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AEtitle%E5%B1%9E%E6%80%A7%E3%81%AE%E5%88%9D%E6%9C%9F%E5%80%A4%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B/)様

これでブロックエディタ・クラシックエディタともに、画像ファイル名・メディアタイトルが自動で変更されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0