はじめに
WordPressのプラグイン、Smart Custom Fields (SCF)をコードで定義する方法についてです。
SCFはWordPressのカスタムフィールド用のプラグインで、繰り返し項目がデフォルトで使うことができます。
カスタムフィールドのコード定義についてのまとめです。
呼び出し
コードの定義の呼び出しはsmart-cf-register-fields
のフィルタフックで行います。
function.php
function my_register_fields( $settings, $type, $id, $meta_type ) {
$Setting = SCF::add_setting( 'id-1', 'functions.php から追加 その1' );
$items = array();
$Setting->add_group( 'group-name-1', false, $items );
}
add_filter( 'smart-cf-register-fields', 'my_register_fields', 10, 4 );
ここの$items
を作ることでカスタムフィールドの定義が作られていきます。
// $Setting->add_group( 'ユニークなID', 繰り返し可能か, カスタムフィールドの配列 );
$items = array(
array(
'name' => 'field-1',
'label' => 'テストフィールド',
'type' => 'text',
),
);
$Setting->add_group( 'front-page-slider', false, $items);
タイプ
テキスト
![Screen Shot 2017-01-07 at 16.17.35.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2Feade8605-4041-b72d-527b-e36adec9927b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b417a22add2c0c16051882a5ae7f15e4)
array(
'type' => 'text', // タイプ
'name' => 'scf-1', // 名前
'label' => 'テキストのテストです', // ラベル
'default' => 'デフォルト値', // デフォルト
'instruction' => '説明文です。', // 説明文
'notes' => 'ここに注記を入れてください' // 注記
),
真偽値
![Screen Shot 2017-01-07 at 16.18.14.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2Fb0440ef0-a1e9-d74b-87af-21c85934473e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9792657b5d7e537d5159b1163b0225f0)
array(
'type' => 'boolean', // タイプ
'name' => 'scf-2', // 名前
'label' => '真偽値のテストです', // ラベル
'default' => true, // デフォルト true or false
'true_label' => 'はい', // TRUE ラベル
'false_label' => 'いいえ', // FALSE ラベル
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
テキストエリア
![Screen Shot 2017-01-07 at 16.18.20.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2Fab65dfc6-34b9-4703-cef9-cefa8ea31573.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=7ffa336951ed2cbc2fa768d98d96aad7)
array(
'type' => 'textarea', // タイプ
'name' => 'scf-3', // 名前
'label' => 'テキストエリアのテストです', // ラベル
'default' => 'デフォルトのテキストです', // デフォルト
'rows' => 5, // 行数
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
チェックボックス
![Screen Shot 2017-01-07 at 16.18.26.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2Fbea5c533-7f05-05fa-6945-a2f9e3d79353.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a94db83b7f9f69c2871beadc5bb38278)
array(
'type' => 'check', // タイプ
'name' => 'scf-4', // 名前
'label' => 'チェックボックスのテストです', // ラベル
'choices' => array(
'key' => 'value',
'キー' => '値',
// 'ダブルアローがない場合', // エラーになります
'選択肢1' => '値1',
'選択肢2' => '値2',
'apple' => 'りんご',
'banana' => 'バナナ',
// キー名がBoolean型の場合、ラベルがキーとなります
true => 'はい', // 取り出すと true ではなく 'はい' となります
false => 'いいえ', // 取り出すと false ではなく 'いいえ' となります
),
'check_direction' => 'horizontal', // 表示方向 vertical or horizontal
// デフォルト値。連想配列キー名を入れます。
'default' => array( 'apple', 'banana' ),
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
ラジオボタン
![Screen Shot 2017-01-07 at 16.18.35.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F8b6017f0-89ac-165b-8e3b-96a535472252.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=31adff22f754a8865399aecb5beeed94)
array(
'type' => 'radio', // タイプ
'name' => 'scf-5', // 名前
'label' => 'ラジオボタンのテストです', // ラベル
'choices' => array(
'key' => 'value',
'キー' => '値',
// 'ダブルアローがない場合', // エラーになります
'選択肢1' => '値1',
'選択肢2' => '値2',
'apple' => 'りんご',
'banana' => 'バナナ',
),
'check_direction' => 'horizontal', // 表示方向 vertical or horizontal
'default' => 'apple', // デフォルト値。
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
セレクトボックス
![Screen Shot 2017-01-07 at 16.18.40.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F95d24a0b-7bbf-f844-4f0a-26016f3e0b52.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=def423f6fef35142832f88d898780dcf)
array(
'type' => 'select', // タイプ
'name' => 'scf-5', // 名前
'label' => 'ラジオボタンのテストです', // ラベル
'choices' => array(
'key' => 'value',
'キー' => '値',
// 'ダブルアローがない場合', // エラーになります
'選択肢1' => '値1',
'選択肢2' => '値2',
'apple' => 'りんご',
'banana' => 'バナナ',
),
'default' => 'apple', // デフォルト値。
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
ファイル
![Screen Shot 2017-01-07 at 16.18.46.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F4abd5006-dad4-0726-7056-5d26c7ba7130.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=92ea191c6f651cdefdee13604cc26b8e)
array(
'type' => 'file', // タイプ
'name' => 'scf-7', // 名前
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
)
画像
![Screen Shot 2017-01-07 at 16.18.51.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2Fdc9e5fa4-cd54-cc26-d265-3c62e9d695b9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=1fbfc0f7c879f0e7a7d506a6f13faafa)
array(
'type' => 'image', // タイプ
'name' => 'scf-8', // 名前
'size' => 'full', // プレビューサイズ full, thumbnail, medium or large
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
WYSIWYGエディタ
![Screen Shot 2017-01-07 at 16.18.58.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F4b3ea698-8539-064f-ba77-bfee5792e6a1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=40adcaac7ca5d6e2d7920ffebfeb2c9c)
array(
'type' => 'wysiwyg', // タイプ
'name' => 'scf-9', // 名前
'default' => '<blink>デフォルトの内容です</blink>', // default
'label' => 'WYSIWYGエディタのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
カラーピッカー
![Screen Shot 2017-01-07 at 16.19.04.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F85fd2dfa-31c2-c96d-cdac-6eae8422dd1b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=7c8f241f46024a36521e388b2c3270cb)
array(
'type' => 'colorpicker', // タイプ
'name' => 'scf-10', // 名前
'default' => '#937cf9', // デフォルト値をRGBで
'label' => 'カラーピッカーのテストです。', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
デイトピッカー
![Screen Shot 2017-01-07 at 16.19.10.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F607e2e39-539e-8959-07be-fdc607695be0.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3ceab7b26dd1d83d1d1e275c224e1b0a)
array(
'type' => 'datepicker', // タイプ
'name' => 'scf-11', // 名前
'default' => '2017/01/01', // デフォルト値
'date_format' => 'yy/mm/dd', // 日付のフォーマット。画面とデータベースの値の両方に影響します。
'max_date' => '+100y', // デイトピッカーで表示されるカレンダーの未来の最大値
'min_date' => '-100y',
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
関連記事
![Screen Shot 2017-01-07 at 16.19.16.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2F0459582b-e431-5875-b521-56b7b01a127f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=57e43ac6d3e80f7fc5d9deadb5594c62)
array(
'type' => 'relation', // タイプ
'name' => 'scf-12', // 名前
'post-type' => array( 'post', 'page' ), // 表示する投稿タイプ
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
関連ターム
![Screen Shot 2017-01-07 at 16.19.21.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F47327%2Fda7ae6e7-039e-7a4d-99b1-7adb22bfd155.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5c36bf87b1388b1959a309771d0f2a0b)
array(
'type' => 'taxonomy', // タイプ
'name' => 'scf-13', // 名前
'taxonomy' => array( 'category', 'post_tag' ), // 表示するタクソノミー
'label' => 'ファイルのテストです', // ラベル
'notes' => '注釈', // 注記
),