WordPress/add_meta_box カスタムフィールドへ入力チェックを付ける
発端はWordPressのみで完結する不動産物件が登録出来るテーマを作る実験をしてる最中に、カスタムフィールドにバリデーションを付けるにはどうしようか?というものでした。但し、ここで言うカスタムフィールドはadd_meta_boxで独自に追加したフィールドに対してです。
前置きはさておき、バリデーションにはjQuery-Validation-Engineを使いました。
https://github.com/posabsolute/jQuery-Validation-Engine
jQuery-Validation-Engineをテーマに入れる
管理画面で読み込むようfunction.phpに記述する
add_action('admin_head' , 'custom_js_and_css');
function custom_js_and_css() {
$dir = get_template_directory_uri();
echo "<script type=\"text/javascript\" src=\"{$dir}/validation/jquery.validationEngine.js\"></script>\n";
echo "<script type=\"text/javascript\" src=\"{$dir}/validation/jquery.validationEngine-ja.js\"></script>\n";
echo "<link type=\"text/css\" rel=\"stylesheet\" href=\"{$dir}/validation/validationEngine.jquery.css\" />\n";
//validationを有効にする
echo <<< HTML
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#post").validationEngine();
});
// jQuery("#title").addClass("validate[required] text-input"); //これはだめな感じ
</script>
HTML;
}
jQuery-Validation-Engineをダウンロードすると色々なファイルが入っていますが、使うのはこの3つです。また、バリデーションを有効にするコードも書き加えます。ちなみに、タイトルにも付けようかと思いましたがこれはだめそう。これは別に何か方法があったはずなので、とりあえず保留に。
function.phpへadd_meta_boxを設定する
add_meta_boxの具体的な設定方法は省きますが、だいたいこんな感じでfunction.phpに記述し、jQuery-Validation-Engineの命名規則に則りclassに追加します。
/*****************************************************
* カスタムフィールド
*****************************************************/
function custom_field(){
// 価格・賃料 ----------------------------
add_meta_box( 'price','価格・賃料' , 'field_Price', 'post', 'side', 'high' );
}
add_action( 'add_meta_boxes', 'custom_field' );
/*-------------------------------------
* 価格・賃料
*------------------------------------*/
function field_Price(){
$id = get_the_ID();
$str = get_post_meta($id,'price',true);
echo "<input type=\"text\" name=\"price\" value=\"{$str}\" size=\"10\" class=\"validate[required] text-input\">万円<br />";
}
jQuery-Validation-Engine自体はフィールドのclassに加えるだけですので、割と簡単です。
実際に動かした画面はこんな感じです。
うん、とても良い感じ。
jQuery-Validation-Engine自体はContactForm7とか、その他色々なメールフォーム系のプラグインに応用が可能なので、テーマに入れるのがベスト。
そんな事しなくてもAdvanceCustomField使えば自由にフィールドを追加してvalidationも付けられるのですが、今回実験してるのは、テーマのみで完結するWordPress不動産サイトなのです。不動産系は項目がとても多いので、全てをWordPressで登録するには骨が折れます。
ある程度の項目に限定する形にはなると思いますが、固定ページをナビゲーションに自動展開するとかカスタムポストでブログを書けるとか、それのみで不動産会社ホームページが完結出来るようなものを目指そうと考えています。






