mwform_number
kana
mwform_inquiry_data_columns-mwf_xxx
mwform_custom_mail_tag
フィルターフック mwform_custom_mail_tag_mw-wp-form-xxx で返される値を画面表示することができるショートコードです。
このショートコードを設置するだけでは何もおこありませんが、 mwform_custom_mail_tag_mw-wp-form-xxx と組み合わせることで画面表示に加え、メール送信・データベース保存が可能になります。入力された会員番号に紐づくデータを確認画面に表示してメール送信する、といったことが可能になります。
問い合わせデータカラムの並び替え機能や新しいフォーム要素の追加を行った MW WP Form 2.8.0 を公開しました。
主な更新内容は下記の通りです。
- スラッグでのフォーム呼び出しのサポート
- フィルターフック
mwform_inquiry_data_columns-mwf_xxx
の追加 - フィルターフック
mwform_upload_file_keys_mw-wp-form-xxx
の追加 - フィルターフック
mwform_upload_dir_mw-wp-form-xxx
およびmwform_upload_filename_mw-wp-form-xxx
で渡される引数に name 属性値を追加 - カスタムメールタグを画面表示するショートコードを追加
- 一部の docx、xlsx、pptx がアップロードできないことがある不具合を修正
- フィルターフック
mwform_upload_filename_mw-wp-form-xxx
で返したファイル名(拡張子含まず)に拡張子が自動付与されない不具合を修正 - メール内容に
{画像のname}
や{ファイルのname}
と書いたときにファイルの URL に変換されるように変更(ただし、データベースに保存するが有効な時のみ) - datepicker の js 属性において、オプションのプロパティ名をダブルクォーテーションで囲むことを(一応)必須に変更
- フォームのトークン名を変更
- (2.8.1)最小画像サイズバリデーションを追加
- (2.8.1)最大画像サイズバリデーションを追加
スラッグでのフォーム呼び出しのサポート
これまで、フォームの呼び出しは [[mwform_formkey key="10"]]
のようにフォームの Post ID による呼び出ししか行えませんでした。2.8.0 からは、フォームのスラッグでの呼び出しが可能になります。フォームの編集画面において、スラッグはデフォルトでは表示されていませんが、右上の「表示オプション」から設定を変更することで確認できるようになります。
[[mwform_formkey slug="フォームスラッグ"]]
この機能は GitHub で @nojimage さんにプルリク頂きました。ありがとうございます!
フィルターフック mwform_inquiry_data_columns-mwf_xxx の追加
データベースに保存された問い合わせデータの一覧、詳細ページ、CSV に出力されるカラム名を変更したり、並び替えたり、非表示にしたりすることができるフィルターフックです。詳しい使い方は mwform_inquiry_data_columns-mwf_xxx のページでご参照ください。
フィルターフック mwform_upload_dir_mw-wp-form-xxx および mwform_upload_filename_mw-wp-form-xxx で渡される引数に name 属性値を追加
これまで、フィルターフック mwform_upload_dir_mw-wp-form-xxx、mwform_upload_filename_mw-wp-form-xxx では画像やファイルを送信した要素の name 属性が把握できませんでした。2.8.0 からはフックの引数で name 属性が取得できるので、特定の要素から送信された画像のみ別のディレクトリに保存する、のようなことが可能になりました。
カスタムメールタグを画面表示するショートコードを追加
フィルターフック mwform_custom_mail_tag_mw-wp-form-xxx でフォーム要素が存在しなくてもメール内容に書いた {キー}
を何らかの値に変換してメール送信したりデータベースに保存することができますが、これを画面にも表示できるショートコードを追加しました。
例えば、入力画面で入力させた会員番号に紐づく情報を確認画面で表示させたり、メール送信・データベース保存したりすることが可能になりました。詳しくは mwform_custom_mail_tag をご参照ください。
datepicker の js 属性において、オプションのプロパティ名をダブルクォーテーションで囲むことを(一応)必須に変更
これまで [[mwform_datepicker name="datepicker" js="minDate: +1"]]
のような指定ができていましたが、これだと PHP 側でごにょごにょすることが難しかったため、正しいフォーマットで記入することを必須にしました。下記のようになります。
[[mwform_datepicker name="datepicker" js='"minDate": "+1"']]
ただ、これを本当に必須にしてしまうと 2.8.0 未満のユーザーさんの datepicker に相当なダメージを与えてしまいそうだったので、一応、内部的に js 属性をパースして正しいフォーマットに自動変換するような仕組みをつくりました。なので特に書きなおさなくてもほとんどの場合で正しく動作すると思います(多分)。2.8.0 にしたら js 属性が効かなくなった!という場合はフォーラムや GitHub の issue でお知らせください…。
(ショートコードの codex みてたら、そもそも属性値にシングルクォーテーションやダブルクォーテーションを含めないほうが良いと書いてあったので、ここで datepicker のオプションを指定されるというのがそもそも NG だった気がしないでもない…)
画像サイズバリデーションの追加
画像の最小サイズ、最大サイズの指定ができるバリデーションを追加しました。コードからこのバリデーションを追加する場合のサンプルコードは minimagesize、maximagesize をご参照ください。
minimagesize
maximagesize
確認画面に遷移しません。
mwform_complete_content_mw-wp-form-xxx
mwform_redirect_url_mw-wp-form-xxx
mwform_complete_content_raw_mw-wp-form-xxx
mwform_translate_datepicker_mw-wp-form-xxx
mwform_custom_mail_tag
多数のフックを追加した MW WP Form 3.0.0 を公開しました
MW WP Form をアップデートするたびにお知らせ記事を書いていたのですが、2.8.0 の記事を書いて以降、ここしばらくさぼっていました(毎回書いている Contact Form 7 の三好さんはすごいですね…)。
1月2月と MW WP Form の機能追加のご依頼がいくつかありまして、その都合でアクションフック・フィルターフックを結構追加しました。結構便利なフックだと思うので、久しぶりにお知らせ記事を書きました。
アクションフック
下記のアクションフックを追加しました。
- mwform_after_exec_shortcode
- mwform_before_load_content_mw-wp-form-xxx
- mwform_after_load_content_mw-wp-form-xxx
- mwform_before_redirect_mw-wp-form-xxx
- mwform_settings_meta_box
- mwform_settings_save_mw-wp-form-xxx
- mwform_contact_data_save-mwf_xxx
特に mwform_after_exec_shortcode はなかなか便利だと思います。
フィルターフック
メソッド
MWF_Functions::get_form_id_from_form_key( $form_key )
2.8.0 以降におこなった機能追加をいくつか
しばらくお知らせを記事を書いていなかったので、ちょっと抜粋して書いておきます。
- MinImageSize バリデーションを追加
- MaxImageSize バリデーションを追加
- Return-Path 設定項目を追加
MW_WP_Form_Data::get_view_flg()
メソッドを追加(現在表示される画面を示すフラグを取得)button
要素の戻る・確認・送信ボタンを追加
MW WP Form Generator でフォームを作ったけどフォームが表示されない
MW WP Form Generator で作成したフォームを表示するためには「スタイル」を選択する必要があります。フォーム編集画面の右下に「スタイルを選択」というプルダウンが表示されていると思いますので、
下記URLのページで、
http://plugins.2inc.org/mw-wp-
実行プロセスを大幅に見直した MW WP Form v4 を開発中です
MW WP Form を一番最初に公開したときの記事(このときは確かまだ野良プラグインだったと思う)の日付が2012年7月となっているので、もうすぐ5年になるようです。当初は PHP も WordPress にもそれほど詳しくなかったというのもありますし、これだけ開発期間が長くなると負債を引きずりながら機能を追加したりしているので、結構コードの見通しが悪くて辛いなぁと思うことが多くなっていました。
先日 WordBench 山口で MW WP Form についてお話させてもらったときに MW WP Form の実行プロセスを全部書き出すということをしたんですけれども、実際に書き出してみるともっとこうしたほうがスマートじゃないかとか、こうしたほうがわかりやすくなるのではないか、みたいなことが見えてきまして、せっかくなのでリファクタリングすることにしました。
2年半くらい前に v2.2.0 でがっつりリファクタリングしたことがあるのですが、このときは内部的にはものすごく大きく変更を入れたので、結構あのフックが使えなくなっているとか、前のバージョンでは動いていたのに動かなくなったとかのメールや書き込みがあったりしました。そういうこともあってもう大きく手を入れるのはやめよう…と思っていたのですが、MW WP Form の機能追加やアドオン開発のお仕事がぼちぼち増えてきており、これは後になればなるほどリファクタリングするのが不可能になるのでは…と感じるようになり、えいやと勢いで再度リファクタリングすることにしました。
ということで、だいたい形にはなってきたのですが、いきなり公式リポジトリにアップデートかけちゃうとまた阿鼻叫喚になる可能性があると思うので一旦事前にお知らせをしておいたほうが良いかなと思った次第。GitHub で v4 を開発中なので、もしお暇のある方やがっつり MW WP Form をお使いの方につきましては、ぜひ開発版でテストをして頂けると嬉しいです。
MW WP Form v4 (開発版) のダウンロードはこちら
影響が大きそうな変更点
なるべく普通に使う分には影響がないようにリファクタリングしているつもりですが、どうにも気にくわなかったり、変更の都合上しかたなかったり、先々のことを考えると変えたほうが良かったりなどでユーザーレベルでも影響がある変更がありますので、それらについてまとめておきたいと思います。
- メール設定が未入力の場合によしなに補完するのを廃止
- [[mwform_formkey]] をもっと素直にショートコードとして実行するように変更
- リダイレクト処理を簡素化
- CSS、JS の読み込み処理の変更
mwform_after_exec_shortcode
アクションフックを非推奨に変更
- 独自バリデーションルールを追加するとき、
mwform_validation_rules
フィルターフックにフックしなくても良いように変更
詳しくは正式版をリリースしたときに書こうと思いますが、管理者宛・自動返信メールで未入力の項目がある状態で使っている方、フックを使っている方はいきなりアップデートせずにぜひ一度テストをお願いします。なるべく後方互換性を保った状態でリリースしたいと思っていますので、テストしておかしな点があればぜひご連絡ください!
MW WP Form v4 からテーマにファイルをおくだけで入力フィールドを上書きできるようになります
先日「実行プロセスを大幅に見直した MW WP Form v4 を開発中です」という記事を書きましたが、いくつか新機能がありますので事前にちょっとずつお知らせしていこうと思います。
テーマから入力フィールドの上書きが可能に
MW WP Form は、これまでもフォーム作成画面でフォームタグを設置するときに class を設定したり、id を設定したりすることはできましたが、入力フィールドの HTML タグ自体を大幅に変更することはできませんでした。MW WP Form v4 からは、テーマに入力フィールド用のテンプレートを置くことで HTML タグを含め入力フィールドをまるごと上書きできるようになります。
例えば、テキストフィールドのデフォルトのテンプレートは次のようになっています。
<input type="text" name="<?php echo esc_attr( $name ); ?>" <?php echo MWF_Functions::generate_input_attribute( 'id', $id ); ?> <?php echo MWF_Functions::generate_input_attribute( 'class', $class ); ?> <?php echo MWF_Functions::generate_input_attribute( 'size', $size ); ?> <?php echo MWF_Functions::generate_input_attribute( 'maxlength', $maxlength ); ?> <?php echo MWF_Functions::generate_input_attribute( 'value', $value ); ?> <?php echo MWF_Functions::generate_input_attribute( 'placeholder', $placeholder ); ?> <?php echo MWF_Functions::generate_input_attribute( 'data-conv-half-alphanumeric', $conv_half_alphanumeric ); ?> />
https://github.com/inc2734/mw-wp-form/blob/feature/refactoring/templates/form-fields/text.php
これを、例えばテキストフィールドは必ず <span class="text-field"><input type="..."></span>
のように囲みたい、みたいになったときは、/themes/使用中テーマ/mw-wp-form/form-fields/text.php
にファイルをコピーし、それを改変することで構造を変更することができます。CSS フレームワークや UI コンポーネントライブラリによっては標準的な入力フィールドだけではなく、一定の HTML を組み立てることでそのライブラリオリジナルの入力フィールドを作れるものもあったりするので、そういうときに便利なのではないかと思います。例えばラジオボタンの見た目をトグルボタンにしちゃうとか。
MWF_Functions::generate_input_attribute() メソッドについて
`MWF_Functions::generate_input_attribute()` はフォーム作成画面で属性の入力があった場合にだけその属性を HTML に設定することができるメソッドになります。例えばテンプレート内に <?php echo MWF_Functions::generate_input_attribute( 'id', $id ); ?>
と書いたとして、フォーム作成画面で ID を設定すれば id="foo"
のような属性が設定され、もし入力がなければ何も設定されない、という動作になります。
MW WP Form v4 の公開時期について
テストコードも全面的に書き直して、動作確認もだいたいできたので、そう遠くない時期にアップデートを行おうかなと考えています。ちょうど今月 WordCamp Kyoto 2017 が開催されるのでその前後とか、ちょっと落ち着いて7月頭とか…。今のところまだ何も報告を頂いたりはしていませんが、僕も WordCamp Kyoto には参加しますので、何かおかしなところがあればそのときに教えていただいても! ということで開発版は下記よりダウンロードできます。ではではー
送信すると「There was an error trying to send your message. Please try again later.」が表示される
「There was an error trying to send your message. Please try again later.」はメールの送信に失敗したときに表示されるメッセージです。このメッセージが表示される原因は、主に次の2つです。
- WordPress 自体からメールが送信できない
- MW WP Form のフォーム編集画面で、メールの本文が設定されていない
WordPress 自体からメールが送信できない
SMTP や、Web サーバーの設定によって、WordPress 自体がメールを送信できないことがあります。MW WP Form は WordPress のメール送信機能を使用しているので、WordPress 自体がメールを送信できないとこのメッセージが表示されます。
WordPress のログイン画面で「パスワードを忘れた方」の手続きをしたり、ユーザーの新規登録をすると WordPress からメールで通知されますので、それを利用して WordPress 自体からメールが送信されているか確認してください。送信できていなければ、WP Mail SMTP などのプラグインを使って、外部の SMTP サーバーを利用するようにすると送信できるようになるかもしれません。
MW WP Form のフォーム編集画面で、メールの本文が設定されていない
MW WP Form からメールを送信するには、どのような文面でメールを送信するか、メール本文の設定が必要です。初期値は空なので、「文面が空 = 空メール = 送信する必要がない」となり、メールが送信されず、メッセージが表示されます。WordPress 自体からはメールは送信できるけどメッセージが表示されるという場合は、こちらのページを参考にメール本文の設定ができているか確認してみてください。
mwform_response_statuses_mwf_xxx
9/1 に MW WP Form v4 をリリースします。
内部を大幅にリファクタリングした MW WP Form v4 を開発しています、リリースしますと言ってから、気づけば1年以上がたっていました。
度々いつリリースするんですか?と聞かれることがあり、まぁ僕も早くリリースしたいんですが、なるべく互換性を保つように配慮したとはいえ、リリースしたら想定していなかった不具合もあるだろうし、「動かなくなった!」とか「早く直してください!」とか問い合わせメールがバンバン送られてくるのだろうなぁと思うとなかなか億劫で、やらねばやらねばと思いながら先延ばしにしてしまっていたのでした。
ただ、ずっとそう言っていても良いタイミングなんてないし、v3系とv4系の両方をメンテするのがなかなか面倒だし、v4 にしなくても動かなくなったからなんとかしてくださいみたいなメールはどうせ日々きているので、いっそリリースしてしまったほうが1本化されるだけスッキリするかなということで、9/1 に v4 をリリースしようかなと思います(超強力な不具合が見つかったとか、風邪引いたとか、諸処の事情で数日のズレが発生する可能性はあるかもしれませんが)。
そういうことで、改めて事前に言っておきたいことは、リリース直後にいきなり色々問い合わせいただいても即時対応はできないということです。正直なところ、MW WP Form は無料で公開しているのでそれ自体は収入になりませんし、僕自身使用する機会がかなり減っているので優先度がそんなにあげられません。
リリースまであと1ヶ月弱ありますので、ぜひ事前に試してみて、不具合があれば issue なり Twitter なりで教えていただければと思います。プルリクまでいただければ超たすかります。