このサイトで投稿ページに追加する画像を自動リネームする設定

このサイトで投稿ページに追加する画像を自動リネームする設定

画像の自動リネームは以下の方法で作成している。画像をページにドロップすると自動的に統一された名前で表示されるようになる。

場所は「外観」メニューから、テーマファイルエディッタの ystandard-child「functions.php」に記述されている。

以下の2つのスクリプトで構成されている。これを実行すると上のような画像のタイトルとファイル名が表示されるようになる。

/**
 * 画像アップロード時にタイトルを投稿IDに自動設定する
 */
function set_image_title_to_post_id( $post_ID ) {
    // 添付ファイル(画像など)の情報を取得
    $attachment = get_post( $post_ID );

    // 添付ファイルの親ID(記事ID)を取得
    $parent_id = $attachment->post_parent;

    // 親記事が存在する場合、タイトルを投稿IDに変更
    if ( $parent_id > 0 ) {
        $new_title = 'Page-ID-' . $parent_id; // "Page-123" のような形式になります

        // 更新用データ
        $updated_attachment = array(
            'ID'         => $post_ID,
            'post_title' => $new_title,
        );

        // データベースを更新
        wp_update_post( $updated_attachment );
    }
}
// 画像が追加された時に実行
add_action( 'add_attachment', 'set_image_title_to_post_id' );


/**
 * 画像アップロード時に画像のファイル名を投稿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 'post-id-'.$filename_new.'.'.$ext;
  }

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