iPhoneから画像をアップロードした時の拡張子名
-
wp_handle_upload()とかでアップロード時にファイル名とURLを置換すれば良いと思います。
関数リファレンス/wp handle uploadこんにちは
フィルターフックだと wp_handle_upload_prefilter フィルターフックあたりでしょうか。
https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_handle_upload_prefilterいろいろご意見ありがとうございます。
前にファイルアップロードでファイル名をリネームするフックを書いていたので、
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' );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' );
トピック「iPhoneから画像をアップロードした時の拡張子名」には新たに返信することはできません。