WordPressのフォーム登録プラグイン「MW WP Form」を使って、登録後に自動で投稿する方法を紹介します。
この記事では、登録フォームの設定方法は割愛し、登録後の自動登録の部分のみ説明します。
環境
WordPress 5.2.4
MW WP Form 4.2.0
任意のテーマ
変更箇所
以下に記載のコードを使用中のテーマにある「function.php」に追加します。
フォームで使用するカスタムフィールドを定義する
管理画面の投稿登録画面に登録フォームで使用するカスタムフィールドの入力欄を追加します。
これを設定することで、投稿時に毎回プルダウンからカスタムフィールドを選択する手間が省かれます。
/** * 投稿画面で表示するカスタムフィールドのHTMLを定義します。 * 第2引数で独自の引数を設定することで、textareaまたはtextを生成するようにしています。 */ function write_html($post, $args) { $field_nm = $args['args'][0]; $type = $args['args'][1]; if ($type == 'textarea') { echo '<textarea name="' . $field_nm . '" style="width: 100%; height: 200px;">' . get_post_meta($post->ID, $field_nm, true) . '</textarea>'; } if ($type == 'text') { echo '<input type="text" name="' . $field_nm . '" style="width: 100%;" value="' . get_post_meta($post->ID, $field_nm, true) . '"/>'; } wp_nonce_field( 'send_field1' , 'nonce_for_field_1' ); } /** * 投稿画面にカスタムフィールドを表示します。 * 最後の引数に配列で独自の引数を設定することができます。 */ function add_custom_meta_box() { // 第1引数:項目ごとのdivタグにつくid名(被らないように任意の値) // 第2引数:登録フォームの各入力項目のname // 第3引数:HTMLを生成するコールバック名 // 第4引数:適用するページの種別(postで) // 第5引数:メタボックスの種別(初期値:advanced) // 第6引数:メタボックスの優先度(初期値:default) // 第7引数:第3引数のコールバックで使う任意の引数(必要であればarrayで定義) add_meta_box('custom_field_1','氏名','write_html','post','advanced','default',array('氏名','text')); add_meta_box('custom_field_2','メールアドレス','write_html','post','advanced','default',array('メールアドレス','text')); } add_action('admin_menu', 'add_custom_meta_box');
フォーム登録後に投稿する
MW WP Formで作成した登録フォームからデータが登録されたら、投稿するようにします。
処理内容は、投稿を新規登録し、カスタムフィールドを別テーブルに登録します。
function update_meta_posts($Mail_admin, $Data) { // 登録フォームから入力データを取得 $form_data = $Data->getInstance(); // 投稿新規データを作成(タイトルと公開状態の2つの最低限) $post = array( 'post_title' => $form_data->get('募集タイトル'), 'post_status' => 'publish' ); // 上記データで投稿を新規登録 $post_id = wp_insert_post($post, true); // 登録フォームのカスタムフィールドを別テーブルに登録 update_post_meta($post_id, '氏名', $form_data->get('氏名')); update_post_meta($post_id, 'メールアドレス', $form_data->get('メールアドレス')); } // アクションフックを追加 // 第1引数:末尾の数字は、登録フォーム作成時のショートコードを設定 // 第2引数:フック実行時の処理 // 第3・4引数:説明がないので用途は不明(固定値??) add_action('mwform_before_send_admin_mail_mw-wp-form-8', 'update_meta_posts', 10, 2);
参考サイト
mwform_before_send_admin_mail_mw-wp-form-xxx | MW WP Form
- 作者: 野島祐慈,菱川拓郎,杉田知至,細谷崇,枢木くっくる
- 出版社/メーカー: 技術評論社
- 発売日: 2017/01/26
- メディア: Kindle版
- この商品を含むブログを見る