MW WP Form のフィールドにGETパラメータで記事IDを引用して記事タイトルを自動入力する

経緯

ニッチなカスタマイズその2。 MW WP Form のフィールドに GETパラメータ で記事IDを持ってきて、そのIDの記事タイトルを自動入力をしてみたいと思います。

今回はサンプルとして、

  • 特定の MW WP Form ページにアクセスした際
  • 特定のGETパラメータが付与されている場合
  • 該当する記事のタイトルを表示

ということをしてみたいと思います。

コード

function eyenut_mwform_autocomplete_getparam_tag( $content, $Data ) {
    if( ! empty( esc_attr( $_GET['article'] ) ) ) {
        $str = "記事:
                  <input readonly type=\"text\" name=\"article\" id=\"article\" class=\"article\" value=\"" . get_the_title( esc_attr( $_GET['article'] ) ) . "\">";
        $content = str_replace( '<!-- 記事ID -->', $str, $content );
    }
    else {
        $content = str_replace( '<!-- 記事ID -->', '', $content );
    }
    return $content;
}
/**
 * アクションフック
 *
 * `mwform_post_content_mw-wp-form-xxx` はフックで使用する修飾子。 `xxx`はフォーム識別子として作成したフォームの投稿IDとする
 * ※今回はサンプルなので投稿IDはハードコーディング
 */
add_filter('mwform_post_content_mw-wp-form-xxx', 'eyenut_mwform_autocomplete_getparam_tag', 10, 2);

やっていることは次の通り。

  • eyenut_mwform_autocomplete_getparam_tag():
    • MW WP Form のページが開かれた際に、 GETパラメータ があるか確認、キーが article のパラメータが存在する場合は処理
    • 予め該当の MW WP Form に仕込んだ HTMLコメント <!-- 記事ID -->inputタグ で置換、値をセット

留意点

上述の通り HTMLコメント を inputタグ に置換する手法を採っているため、コメントを入力できるようにするためにフォーム作成画面はビジュアルエディタではなくテキストエディタで編集する必要があります。

検証

では上述コードをプラグインとしてインストールし、 MW WP Form も用意して検証してみます。

MW WP Form のテストフォーム2
MW WP Form のテストフォーム2

このようなテストのフォームを作成します(ログイン時自動入力の使い回し)。

プラグインを有効化して 記事ID を GETパラメータ で付与した状態のテストフォーム
プラグインを有効化して 記事ID を GETパラメータ で付与した状態のテストフォーム

次にプラグインを有効化し、 GETパラメータ で記事IDを付与してアクセスします。

今回はサンプルなので ?article=1 でインストール時に自動で付いてくる Hello World! の記事を引っ張ってきてみました。無事記事タイトルが自動入力されていることが確認できました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。