MW WP Form バージョン2.3.0を公開しました。

MW WP Form 2.3.0 を公開しました。主な変更箇所は以下のとおりです。

  • カスタムメールタグ機能(フィルターフック mwform_custom_mail_tag_mw-wp-form-xxx)を追加
  • フィルターフック mwform_contact_data_post_type を追加
  • フィルターフック mwform_get_inquiry_data_args-mwf_xxx を追加
  • デバックモードを追加
  • フィルターフック mwform_log_directory を追加
  • ai、psd、eps ファイルがアップロードできなくなっていた不具合を修正
  • チェックボックス、セレクトボックス、ラジオボタンにおいて、送信値と表示値を「:」で分割したとき、送信値をメールで送信するオプションを追加

カスタムメールタグ機能

メール送信時にオリジナルの「メールタグ」を定義する機能を追加しました。例えばメール内容の設定で{send_date}としたときに、送信日時に変換されてメール送信させる、ということが可能です。フィルターフック mwform_custom_mail_tag_mw-wp-form-xxx を利用して、次のようなコードで追加できます。

/**
 * {send_datetime} としたときに送信日時に変換して送信する
 *
 * @param string $value 送信された値
 * @param string $key メールタグ
 * @param int $insert_contact_data_id データベースに保存した場合、そのときの Post ID
 */
function send_date_time( $value, $key, $insert_contact_data_id ) {
    if ( $key === 'send_datetime' ) {
        return date( 'Y/m/d l H:i:s' );
    }
    return $value;
}
add_filter( 'mwform_custom_mail_tag_mw-wp-form-180', 'send_date_time', 10, 3 );

フィルターフック mwform_contact_data_post_type を追加

問い合わせデータページのレコードの取得条件をカスタマイズするためのフィルターフックです。このフックを使えば特定の権限のユーザーは、「データベースに保存」としているフォームのうち特定のフォームのみしか閲覧することができない、のようなことが可能になります。

/**
 * 投稿タイプが mwf_119 のレコードは表示させない
 * 
 * @param array $contact_data_post_types 投稿タイプの一覧
 * @return array
 */
function my_mwform_contact_data_post_types( $contact_data_post_types ) {
    foreach ( $contact_data_post_types as $key => $value ) {
        if ( $value === 'mwf_119' ) {
            unset( $contact_data_post_types[$key] );
        }
    }
    return $contact_data_post_types;
}
add_filter( 'mwform_contact_data_post_types', 'my_mwform_contact_data_post_types' );

フィルターフック mwform_get_inquiry_data_args-mwf_xxx を追加

問い合わせデータページの件数表示、および問い合わせデータの一覧ページ、ダウンロードCSV、グラフページのレコード取得条件をカスタマイズするためのフィルターフックです。このフックを使えば特定の日付の問い合わせデータのみ表示する、などが可能です。

/**
 * 「予約日」が「2015-01-01」のレコードのみ表示
 *
 * @param array $args
 * @return array
 */
function my_mwform_get_inquiry_data_args( $args ) {
    $args = array_merge( $args, array(
        'meta_query' => array(
            array(
                'key'   => '予約日',
                'value' => '2015-01-01',
            ),
         ),
    ) );
    return $args;
}
add_filter( 'mwform_get_inquiry_data_args-mwf_xxx', 'my_mwform_get_inquiry_data_args' );

デバックモード

MAAMP や VCCW を使いローカルで開発を行っていると、メールが送信されないので、どのような内容のメールが送信されるのか確認したいときに不便に感じていました。そこで、define( 'MWFORM_DEBUG', true ); とすることで送信されるメールの内容をログに書き出せるようにしました。

ログは、デフォルトでは/wp-content/uploads/mw-wp-form_uploads/mw-wp-form-debug.logに出力されます。ログの出力場所はmwform_log_directoryフィルターフックで変更できます。

チェックボックス、セレクトボックス、ラジオボタンにおいて、送信値と表示値を「:」で分割したとき、送信値をメールで送信するオプションを追加

チェックボックス、セレクトボックス、ラジオボタンの選択肢は「:」で送信値と表示値を分けることができますが、これまでは分けたとしても実際にメールに送信されたりデータベースに保存される値は表示値となっていました。これを表示値に変換せずに送信値が利用されるようにするには、次のようにオプションを指定してください。

[ mwform_checkbox ... post_raw="true" ]

ちなみに、「:」をそのまま表示したいとき、例えば 10:00〜などとしたいときは「10::00〜」のように入力すればそのまま表示することができます。