WordPressでアップロードされたファイル名をランダム化する方法
WordPressのファイルアップロード機能は年々向上していますが、一つの問題に直面し続けています。それは、アップロードした際にファイル名が完全に保持されるため、画像ファイルパスが不一致で非常に長くなってしまうことです。
さらに厄介なことに、Skitchを使用してさまざまなターミナルコマンドのスクリーンショットをキャプチャすると、ターミナルからフルパスをキャプチャして、それをファイル名として使用しますが、それは非常に長すぎて馬鹿げています。
はるかに簡単な解決策は、アップロードされたすべての画像をシンプルなランダムファイル名に変更するために数行のコードを追加し、それを最初の8文字に切り詰めて、HTML内の画像パスがあまりにも複雑にならないようにすることです。
// randomize upload filenames
function htg_randomize_uploaded_filename( $filename ) {
// does it have an extension? grab it
$ext = empty( pathinfo( $filename )['extension'] ) ? '' : '.' . pathinfo( $filename )['extension'];
// return the first 8 characters of the MD5 hash of the name, along with the extension
return substr(md5($filename), 0, 8) . $ext;
}
add_filter( 'sanitize_file_name', 'htg_randomize_uploaded_filename', 10 );
コードをテーマフォルダ内にあるfunctions.phpファイルに貼り付けてください。そうすればすぐに動作を開始するはずです。
これは、作業を行い新しいファイル名を返す関数をsanitize_file_nameフィルターに追加することで機能します。WordPressはその新しい名前を使用しようとしますが、もし衝突があれば、末尾に-1を追加し、衝突が解消されるまで番号を付け続けます。現実的にはそれが起こる可能性は低いですが、問題にならないことを知っておくのは良いことです。
