CG
(@du-bist-der-lenz)
jpeg でアップロード出来ないというのではないですね
wp_handle_upload()
とかでアップロード時にファイル名とURLを置換すれば良いと思います。
関数リファレンス/wp handle upload
いろいろご意見ありがとうございます。
前にファイルアップロードでファイル名をリネームするフックを書いていたので、
function rename_file($filename){
$pathinfo = pathinfo($filename);
if ($info['filename'] == 'sitemap'){
return $filename;
}
return date("YmdHis") . "." . $pathinfo['extension'];
}
add_filter('sanitize_file_name', 'rename_file', 10);
これを、
function rename_file($filename){
$pathinfo = pathinfo($filename);
if ($info['filename'] == 'sitemap'){
return $filename;
}
if ($pathinfo['extension'] == 'jpeg'){
return date("YmdHis") . ".jpg";
}
return date("YmdHis") . "." . $pathinfo['extension'];
}
add_filter('sanitize_file_name', 'rename_file', 10);
というふうにしました。
特に問題がないようなので良しとしたいのですが、コードなど問題ありましたらご指摘いただけると幸いです。
3行目のif ($info['filename'] == 'sitemap'){
ですが$infoが$pathinfoの間違いのようです。
エラーも無くて問題無く動けば大丈夫ではないでしょうか。
sanitize_file_name() はファイル名をフォーマットするためのヘルパー関数であり、アップロード以外にもプラグインやテーマ等で使用される可能性があるので注意する必要があります。
問題がないようでしたら大丈夫かとは思いますが・・・。
いろいろご指摘ありがとうございます。
プラグインやテーマ等で使用される可能性があるというのは気がかりな感じですね。
こうした方がイイんじゃないかなというコードなどありましたら参考に教えていただけると助かります。
よろしくお願いします。
こんな感じではどうでしょうか。
function upload_prefilter_jpeg_to_jpg( $file ){
$ext = substr( strrchr( $file['name'], '.' ), 1 );
if ( $ext == 'jpeg' ) {
$file['name'] = basename( $file['name'], 'jpeg' ) . 'jpg';
}
return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'upload_prefilter_jpeg_to_jpg' );
ishitakaさんありがとうございます。
このやり方でファイル名を日付(YmdHis)にリネイムさせることはできますか?
wp_handle_upload_prefilter フィルターフックの後に sanitize_file_name フィルターフックもコールされるので、そのままで変更されませんか?
なお、wp_handle_upload_prefilter フックで変更する場合は、下記のような感じでしょうか。
function upload_prefilter_jpeg_to_jpg( $file ){
$ext = substr( strrchr( $file['name'], '.'), 1 );
if ( $ext == 'jpeg' ) {
$ext = 'jpg';
}
$file['name'] = date("YmdHis") . '.' . $ext;
return $file;
}
add_filter('wp_handle_upload_prefilter', 'upload_prefilter_jpeg_to_jpg' );
ishitakaさんありがとうありがとうございました。
問題なく出来るようです。
こちらの方を採用させていただくということで解決済みにさせていただきます。
ご意見くださった皆様ありがとうございました。