カスタムフィールドを使って入力フォームを追加して利用する
カスタムフィールドを使って管理画面の投稿ページで入力フォームを追加する方法とテーマ内での利用方法をまとめました。
基本的な追加方法
投稿画面の上の表示オプションをクリックすると表示される
「カスタムフィールド」のチェックボックスをチェックすると
「カスタムフィールド」を追加できる入力フォームが表示されます。
名前と値を入力してから「カスタムフィールドを追加」をクリックしてください。
テーマ内でカスタムフィールドのデータを利用する
名前「test」値「テスト」
名前「test2」値「テスト2」
と投稿した場合にテーマ内で
<?php the_meta(); ?>
を使用すると下記のように表示されます。
◆get_post_custom
指定した記事や固定ページから、すべてのカスタムフィールドの情報を配列で取得
関数リファレンス/get post custom - WordPress Codex 日本語版
<?php $meta = get_post_custom(); ?>
配列に格納されます。
Array
(
[_edit_last] => Array
(
[0] => 1
)
[_edit_lock] => Array
(
[0] => 1475808515:1
)
[test] => Array
(
[0] => テスト
)
[test2] => Array
(
[0] => テスト2
)
[_cmb_test_text] => Array
(
[0] => いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
)
)
その他
◆テンプレートタグ
特定の投稿の特定のキーからカスタムフィールドの値を取得します。
関数リファレンス/get post meta - WordPress Codex 日本語版
◆カスタムメタデータの名前・値を取得
指定した記事や固定ページから、すべてのカスタムフィールドのキーを配列で取得します。
関数リファレンス/get post custom keys - WordPress Codex 日本語版
1 つのキーに複数の値が割り付けられているカスタムフィールドの値を取得するのに向いています。
関数リファレンス/get post custom values - WordPress Codex 日本語版
◆追加、更新、削除
指定した投稿や固定ページへカスタムフィールドを追加します。
関数リファレンス/add post meta - WordPress Codex 日本語版
指定した投稿に存在するカスタムフィールドの値を更新
関数リファレンス/update post meta - WordPress Codex 日本語版
投稿から指定したキー(もしくはキーと値)を持つカスタムフィールドをすべて削除
関数リファレンス/delete post meta - WordPress Codex 日本語版
プラグインのメタボックスを利用してカスタムフィールドの代わりに使う
入力フォームをカスタムフィールドを使わずに追加できる方法です。
メタボックスだと常に投稿時に表示されているので
毎回同じ項目をカスタムフィールドで作成している場合にオススメです。
プラグインをインストールできたらfuctions.phpに以下のコードを記入するとメールアドレス入力欄が作成できます。
function cmb2_text_email_metabox() { $cmb = new_cmb2_box( array( 'id' => 'cmb2_text_email_metabox', 'title' => 'Person Information', 'object_types' => array( 'post' ), ) ); $cmb->add_field( array( 'name' => 'メールアドレス', 'id' => '_cmb2_person_email', 'type' => 'text_email', 'desc' => 'メールアドレスを入力してください。', ) ); } add_action( 'cmb2_admin_init', 'cmb2_text_email_metabox' );
テーマ内で
$meta = get_post_custom();
を使用すると配列に格納されています。
Array ( [_edit_last] => Array ( [0] => 1 ) [_edit_lock] => Array ( [0] => 1475828725:1 ) [_cmb2_person_email] => Array ( [0] => test@test.com ) )
サンプルフォーム
利用できる投稿タイプを指定
'object_types' => array( 'post', 'page', ), // Post type
post:記事の投稿
page:固定ページ
その他
Display Options · WebDevStudios/CMB2 Wiki · GitHub
add_action( 'cmb2_admin_init', 'cmb2_sample_metaboxes' ); /** * Define the metabox and field configurations. */ function cmb2_sample_metaboxes() { // Start with an underscore to hide fields from custom fields list $prefix = '_yourprefix_'; /** * Initiate the metabox */ $cmb = new_cmb2_box( array( 'id' => 'test_metabox', 'title' => __( 'Test Metabox', 'cmb2' ), 'object_types' => array( 'post', 'page', ), // Post type 'context' => 'normal', 'priority' => 'high', 'show_names' => true, // Show field names on the left // 'cmb_styles' => false, // false to disable the CMB stylesheet // 'closed' => true, // Keep the metabox closed by default ) ); // Regular text field $cmb->add_field( array( 'name' => __( 'Test Text', 'cmb2' ), 'desc' => __( 'field description (optional)', 'cmb2' ), 'id' => $prefix . 'text', 'type' => 'text', 'show_on_cb' => 'cmb2_hide_if_no_cats', // function should return a bool value // 'sanitization_cb' => 'my_custom_sanitization', // custom sanitization callback parameter // 'escape_cb' => 'my_custom_escaping', // custom escaping callback parameter // 'on_front' => false, // Optionally designate a field to wp-admin only // 'repeatable' => true, ) ); // URL text field $cmb->add_field( array( 'name' => __( 'Website URL', 'cmb2' ), 'desc' => __( 'field description (optional)', 'cmb2' ), 'id' => $prefix . 'url', 'type' => 'text_url', // 'protocols' => array('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet'), // Array of allowed protocols // 'repeatable' => true, ) ); // Email text field $cmb->add_field( array( 'name' => __( 'Test Text Email', 'cmb2' ), 'desc' => __( 'field description (optional)', 'cmb2' ), 'id' => $prefix . 'email', 'type' => 'text_email', // 'repeatable' => true, ) ); // Add other metaboxes as needed }
フィールドタイプ一覧
'type' =>
Field Types · WebDevStudios/CMB2 Wiki · GitHub
指定できるパラメータ
add_field
Field Parameters · WebDevStudios/CMB2 Wiki · GitHub
カスタムフィールドも検索対象にするプラグイン
通常の検索ではカスタムフィールドが検索対象でないのでプラグインを使って検索対象にする方法です。
Search Everythingの有効化が完了したら設定画面で「すべてのカスタムフィールドを検索」をチェックして「Save Changes」をクリックしてください。