これは私がWPを使ってアップロード中に画像の名前を変更したり、画像のファイル名をポストスラッグに合わせて設定するためのものです。
function wpsx_5505_modify_uploaded_file_names($arr) {
// Get the parent post ID, if there is one
if( isset($_REQUEST['post_id']) ) {
$post_id = $_REQUEST['post_id'];
} else {
$post_id = false;
}
// Only do this if we got the post ID--otherwise they're probably in
// the media section rather than uploading an image from a post.
if($post_id && is_numeric($post_id)) {
// Get the post slug
$post_obj = get_post($post_id);
$post_slug = $post_obj->post_name;
// If we found a slug
if($post_slug) {
$random_number = Rand(10000,99999);
$arr['name'] = $post_slug . '-' . $random_number . '.jpg';
}
}
return $arr;
}
add_filter('wp_handle_upload_prefilter', 'wpsx_5505_modify_uploaded_file_names', 1, 1);
$ post_slugを追加して元のファイル名を保持したい
[thread_title] - [original_filename] .ext
あなたは交換しようとすることができます
$arr['name'] = $post_slug . '-' . $random_number . '.jpg';
と
$arr['name'] = $post_slug . '-' . $arr['name'];
ファイルフォーマット[post_slug]-[original_filename].ext
を取得します。
これは、ファイル名が$arr
の画像のcar.png
構造体の例です。
Array
(
[name] => car.png
[type] => image/png
[tmp_name] => /tmp/phpJKhCwI
[error] => 0
[size] => 5868
)
[post_slug].ext
フォーマットを取得するために、これを使うことができます:
$arr['name'] = $post_slug . '.' . pathinfo( $arr['name'], PATHINFO_EXTENSION );
投稿のタイトルがMy favorite car
のときは、
Array
(
[name] => my-favorite-car.png
[type] => image/png
[tmp_name] => /tmp/phpJKhCwI
[error] => 0
[size] => 5868
)
同じファイル名で複数の画像がアップロードされると、アップロードされた画像のファイル名は次のようになります。
my-favorite-car.png (1. upload)
my-favorite-car1.png (2. upload)
my-favorite-car2.png (3. upload)
...