【第三回】【中編】WordPressでよく使われるフォーム(MW WP Form)をコメント機能として利用した話

MW WP FORMとは?

MW WP Form — WordPress Plugins

 MW WP Formは、WordPressを使用したサイトでお問い合わせフォームや応募フォームなどの「フォーム」を簡単に作れるWordPressのプラグインです。前回より「MW WP Formを使ったコメント機能」をご紹介しています。

前回のおさらいとして求められる仕様を記載します。

求められる仕様。

01.コメントには確認画面がほしい。
02.コメントを行った場合、サイト管理者と入力者それぞれにメールが届くようにしてほしい。
03.メールについては、サイト管理者・入力者それぞれ違う内容のものを送るようにしたい。
04.コメントにカスタムフィールド的なものを入れたい。
05.コメントと記事を連動させたい。
06.コメントに画像を入れるようにしたい。
07.コメントの入力に必須や任意の項目を作りたい。
08.コメントが入た際に、掲載するかしないかの判断ができるようにしたい。
09.コメントの入力項目(選択式)に独自に作った分類(更新可能なもの)というのを反映したい。
10.コメントが入ったときに、独自に作った分類のカウントを増やす機能を作りたい。
11.この独自のコメントは、投稿(記事作成)のときに入れるものとしたい(タグ的なイメージ)

この内、01~07をクリアにする方法を前回の記事でご紹介しました。

関連記事

今回は、前回作成したフォームを出すという方法をご紹介しながら、残りの08以降どうやって対応していったのかをご紹介していきたいと思います。

  

 

前回作成したフォームを出す出力する方法のご紹介

Step:03 保存されたデータを元に承認プログラムを作る。

前回作成したフォームが管理画面に表示されるのは確認できたかと思います。ですが、実際に表示させ無ければ意味がありません。そこで、表示させたいテンプレート(WP-テンプレート階層図参照)側に記載するプログラムを作るのですが、その前に管理者が承認するかしないかを決めるようにしなければなりません。そこで、

こちらの詳細をクリックした際に

となるように対応状況をカスタマイズして上図のように「掲載OK」「掲載不可」という2つの項目を足すことにしました。その際利用したフィルターフックがこちらです。

mwform_response_statuses_mwf_xxx

こちらを参考に作ったプログラムがこちらです。

function my_mwform_response_statuses( $response_statuses ) {
$response_statuses['keisaikanou'] = '掲載OK';
$response_statuses['keisaifuka'] = '掲載不可';
return $response_statuses;
}
add_filter( 'mwform_response_statuses_mwf_351', 'my_mwform_response_statuses' );

こちらをテーマ内にあるfunction.phpに記載することで上図のように「掲載OK」「掲載不可」が対応状況の項目に足されるようになります。因みになのですが、管理画面お問い合わせの一覧のURLを見ると
サイトURL/wp-admin/edit.php?post_type=mwf_xxx となっていると思います。この「?post_type=xxx」の機能をWordPressでは「カスタム投稿」と呼びます。また、このmwf_xxxのxxxはフォームのidになっています。

これらの下準備ができれば、後はテンプレート側に一覧を出すという作業を行うのみ…

記事詳細(single.php)の部分にコメントとして出力する様にプログラムを作ってみました。

ここで注意点があります。

1.画像がない場合ダミーの画像が出るようにしているので、
テーマファイル直下のimgにdummy_image.jpgを作って入れておいて下さい。
2.カスタムフィールドを出すために「Smart Custom Fields」というプラグインを使用しているのでこちらのプラグインを入れておいて下さい。

このプログラムを入れることで、MW WP Formを利用して、コメント的なものを出力することができるようになりました。

このプログラムの中にある。

<?php if(!empty(SCF::get('genre',$query1->post->ID))): ?>
<?php $termlist = get_term( SCF::get('genre',$query1->post->ID), 'genre' ); ?>
<p class="fishgenre_single_comment_history">ジャンル:
<a href="<?php echo get_term_link($termlist->term_taxonomy_id,'genre'); ?>"><?php echo $termlist->name; ?></a>
</p>
<?php endif; ?>

というものがあると思いますが、これはまた最後の記事として

関連記事

にてご紹介していきたいと思います。

この記事と同じカテゴリの記事