サポート » プラグイン » 【MW WP Form】保存されるファイル名を変更したい

  • 解決済 dominoDomino

    (@dominodomino)


    MW WP Formで作成したフォーム内にファイルをアップロードする[mwform_file]を3箇所設置しております。
    保存されるファイル名をそれぞれ別のものにしたいです。

    「問い合わせデータをデータベースに保存」にもチェックを入れており、
    プラグイン作者様が作ったマニュアルページの

    /**
     * ファイル名が重複する場合は WordPress の関数により自動的に重複が解消されます(後置詞が付与される)
     *
     * @param empty $path
     * @param MW_WP_Form_Data $Data
     * @param string $key name 属性値
     * @return string 空値以外を返したときだけそのファイル名が使用される
     */
    function my_mwform_upload_filename( $filename, $Data, $key ) {
        return date( 'Y-m-d-h-i-s' ); // 拡張子は不要
    }
    add_filter( 'mwform_upload_filename_mw-wp-form-xxx', 'my_mwform_upload_filename', 10, 3 );

    も試してみたのですが、

    2020-01-09-06-20-00.jpg
    2020-01-09-06-20-00-1.jpg
    2020-01-09-06-20-00-2.jpg

    といったファイル名になります。
    希望としては、下記のようなトラッキングナンバーと別々の語句を付けたいです。

    ‘トラッキングナンバー’-test-1.jpg
    ‘トラッキングナンバー’-image-2.jpg
    ‘トラッキングナンバー’-img-3.jpg

    ご存知の方がいらっしゃいましたらぜひご教示いただきたいです。
    よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    mwform_upload_filename_mw-wp-form-xxx フィルターフックはフィールド (ファイル) 毎にフックされます。どのフィールドかは第3引数 ($key) で判定することができます。

    例:

    function my_mwform_upload_filename( $filename, $Data, $key ) {
    	$keys = [
    		'フィールド1の名前' => 'test-1',
    		'フィールド2の名前' => 'image-2',
    		'フィールド3の名前' => 'img-3',
    	];
    	if ( isset( $keys[$key] ) ) {
    		$post_id = $Data->get( 'mw-wp-form-form-id' );
    		$tracking_number = get_post_meta( $post_id, MWF_Config::TRACKINGNUMBER, true );
    		$filename = sprintf( '%d-%s', $tracking_number, $keys[$key] );
    	}
    	return $filename;
    }
    add_filter( 'mwform_upload_filename_mw-wp-form-xxx', 'my_mwform_upload_filename', 10, 3 );

    ishitaka 様

    お返事いただきありがとうございます。
    早速、ご提示いただいた例を基に置き換えてみると、
    無事に希望通り変更できました。

    mwform_upload_filename_mw-wp-form-xxxフィルターフックがフィールド毎にフックされるのは存じ上げなかったので勉強になりました。

    MW WP Formは結構利用しているので、また詰まった際はぜひよろしくお願いいたします。
    誠にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。