WordPressの入力フォームからカスタムフィールドに値をセットする

 Wordpressではサイト管理の記事タブから投稿ごとのカスタムフィールドを追加することもできますが、カスタマイズした入力フォームから
追加することもできます。 フォームからの入力は特に絞込み検索に対応させる場合に、投稿者がフィールド名称を気にすることなく入力できますので
フィールド数が多ければ更に有効です。 ここではカスタマイズした入力フォームからカスタムフィールドに値を追加する方法について記します。

こちらのフォームはWordpressのページをカスタマイズした医療機関登録フォームの一部です。

このようなフォームからのデータはWordpressで用意されている関数を用いMysqlDBのテーブル(wp_postmeta)に書き込むことができます。

医療機関登録フォームからのDBへの登録はカスタムフィールドだけでなく全てこちらのフォームから行っています。

そのためまずWP_POSTテーブルに必要なデータを書き込みます。

実行関数はwp_insert_post($post)です。

$postは配列でフィールドの値をセットしたものです。


$post = array(
"ID" => " ",
 "post_author" => "1",
 //"post_date" => " ",//登録時の時刻を登録する
 //"post_date_gm" =>  " ",//登録時の自動計算時刻
 "post_content" => "$content",// 診療科目
 "post_title" => "$title",// 医療機関名称
 "post_excerpt" => " ",
 "post_status" => "publish",
 "comment_status" => "open",
 "ping_status" => "open",
 //"post_password" => " ",//passwordで保護する場合
 "post_name" => " ",
 "to_ping" => " ",
 "pinged" => " ",
 "post_modified" => " ",
 "post_modified_gmt" => " ",
 "post_content_filtered" => " ",
 "post_parent" => " ",
 "guid" => " ",
 "menu_order" => "0",
 "post_type" => "post",
 "post_mime_type" => " ",
 "comment_count" => "0"
 );  
//detabase 登録(wp_posts)
wp_insert_post($post);

これにより、wp_postテーブルから投稿IDを取得しwp_postmetaのpost_idとして対応させることができます。

そして、add_post_meta($post_id,’location_name’,$location_name)を実行してDBに追加します。

BettySakura『札幌市内医療機関検索』サイトではwordpressプラグインのCustom Fields Searchにより、このカスタムフィールドの値をもとに絞込み検索ができるようにしています。

Leave a Reply

will not be published

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>