SmartCustomFieldsのコードでの定義についてのまとめ

# はじめに
WordPressのプラグイン、Smart Custom Fields (SCF)をコードで定義する方法についてです。
SCFはWordPressのカスタムフィールド用のプラグインで、繰り返し項目がデフォルトで使うことができます。
カスタムフィールドのコード定義についてのまとめです。

> [Smart Custom Fields でカスタムフィールドの定義を Git で管理できるようになりました！](https://2inc.org/blog/2015/03/12/4670/)

# 呼び出し
コードの定義の呼び出しは`smart-cf-register-fields`のフィルタフックで行います。　

```php: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`を作ることでカスタムフィールドの定義が作られていきます。

```php
// $Setting->add_group( 'ユニークなID', 繰り返し可能か, カスタムフィールドの配列 );
$items = array(
  array(
	'name'  => 'field-1',
	'label' => 'テストフィールド',
	'type'  => 'text',
  ),
);
  $Setting->add_group( 'front-page-slider', false, $items);
```

# タイプ
https://gist.github.com/yousan/643aac32e0f2932e37960414d045af25

## テキスト
<img width="734" alt="Screen Shot 2017-01-07 at 16.17.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/eade8605-4041-b72d-527b-e36adec9927b.png">

```php
	array(
		'type'        => 'text',                         // タイプ
		'name'        => 'scf-1',                        // 名前
		'label'       => 'テキストのテストです',            // ラベル
		'default'     => 'デフォルト値',                   // デフォルト
		'instruction' => '説明文です。',                   // 説明文
		'notes'       => 'ここに注記を入れてください'        // 注記
	),
```

## 真偽値

<img width="728" alt="Screen Shot 2017-01-07 at 16.18.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/b0440ef0-a1e9-d74b-87af-21c85934473e.png">

```php
	array(
		'type'        => 'boolean',                       // タイプ
		'name'        => 'scf-2',                         // 名前
		'label'       => '真偽値のテストです',               // ラベル
		'default'     => true,                            // デフォルト true or false
		'true_label'  => 'はい',                           // TRUE ラベル
		'false_label' => 'いいえ',                         // FALSE ラベル
		'instruction' => 'ここにテキストを入力してください。', // 説明文
		'notes'       => 'ここに注記を入れてください',        // 注記
	),
```

## テキストエリア
<img width="730" alt="Screen Shot 2017-01-07 at 16.18.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/ab65dfc6-34b9-4703-cef9-cefa8ea31573.png">

```php
	array(
		'type'        => 'textarea',                      // タイプ
		'name'        => 'scf-3',                         // 名前
		'label'       => 'テキストエリアのテストです',        // ラベル
		'default'     => 'デフォルトのテキストです',          // デフォルト
		'rows'        => 5,                               // 行数
		'instruction' => 'ここにテキストを入力してください。', // 説明文
		'notes'       => 'ここに注記を入れてください',        // 注記
	),
```

## チェックボックス
<img width="732" alt="Screen Shot 2017-01-07 at 16.18.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/bea5c533-7f05-05fa-6945-a2f9e3d79353.png">

```php
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'           => 'ここに注記を入れてください',		    // 注記
	),
```

## ラジオボタン
<img width="732" alt="Screen Shot 2017-01-07 at 16.18.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/8b6017f0-89ac-165b-8e3b-96a535472252.png">

```php
	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'           => 'ここに注記を入れてください',        // 注記
	),
```

## セレクトボックス

<img width="730" alt="Screen Shot 2017-01-07 at 16.18.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/95d24a0b-7bbf-f844-4f0a-26016f3e0b52.png">

```php
	array(
		'type'        => 'select',                       // タイプ
		'name'        => 'scf-5',                        // 名前
		'label'       => 'ラジオボタンのテストです',        // ラベル
		'choices'     => array(
			'key'    => 'value',
			'キー'     => '値',
			// 'ダブルアローがない場合', // エラーになります
			'選択肢1'   => '値1',
			'選択肢2'   => '値2',
			'apple'  => 'りんご',
			'banana' => 'バナナ',
		),
		'default'     => 'apple',                          // デフォルト値。
		'instruction' => 'ここにテキストを入力してください。',  // 説明文
		'notes'       => 'ここに注記を入れてください',        // 注記
	),
```

## ファイル

<img width="733" alt="Screen Shot 2017-01-07 at 16.18.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/4abd5006-dad4-0726-7056-5d26c7ba7130.png">

```php
	array(
		'type'  => 'file',                       // タイプ
		'name'  => 'scf-7',                      // 名前
		'label' => 'ファイルのテストです',          // ラベル
		'notes' => 'ここに注記を入れてください',    // 注記
	)
```


## 画像　

<img width="725" alt="Screen Shot 2017-01-07 at 16.18.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/dc9e5fa4-cd54-cc26-d265-3c62e9d695b9.png">

```php
	array(
		'type'  => 'image',                       // タイプ
		'name'  => 'scf-8',                       // 名前
		'size'  => 'full',                        // プレビューサイズ full, thumbnail, medium or large
		'label' => 'ファイルのテストです',           // ラベル
		'notes' => 'ここに注記を入れてください',      // 注記
	),
```

## WYSIWYGエディタ
<img width="739" alt="Screen Shot 2017-01-07 at 16.18.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/4b3ea698-8539-064f-ba77-bfee5792e6a1.png">

```php
	array(
		'type'    => 'wysiwyg',                           // タイプ
		'name'    => 'scf-9',                            // 名前
		'default' => '<blink>デフォルトの内容です</blink>', // default
		'label'   => 'WYSIWYGエディタのテストです',         // ラベル
		'notes'   => 'ここに注記を入れてください',           // 注記
	),
```

## カラーピッカー
<img width="731" alt="Screen Shot 2017-01-07 at 16.19.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/85fd2dfa-31c2-c96d-cdac-6eae8422dd1b.png">

```php
	array(
		'type'    => 'colorpicker',                       // タイプ
		'name'    => 'scf-10',                            // 名前
		'default' => '#937cf9',                          // デフォルト値をRGBで
		'label'   => 'カラーピッカーのテストです。',         // ラベル
		'notes'   => 'ここに注記を入れてください',           // 注記
	),
```

## デイトピッカー
<img width="727" alt="Screen Shot 2017-01-07 at 16.19.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/607e2e39-539e-8959-07be-fdc607695be0.png">

```php
	array(
		'type'        => 'datepicker',                       // タイプ
		'name'        => 'scf-11',                         // 名前
		'default'     => '2017/01/01', // デフォルト値
		'date_format' => 'yy/mm/dd',                    // 日付のフォーマット。画面とデータベースの値の両方に影響します。
		'max_date'    => '+100y',                        // デイトピッカーで表示されるカレンダーの未来の最大値
		'min_date'    => '-100y',
		'label'       => 'ファイルのテストです',               // ラベル
		'notes'       => 'ここに注記を入れてください',        // 注記
	),
```


## 関連記事
<img width="735" alt="Screen Shot 2017-01-07 at 16.19.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/0459582b-e431-5875-b521-56b7b01a127f.png">

```php
	array(
		'type'      => 'relation',                       // タイプ
		'name'      => 'scf-12',                         // 名前
		'post-type' => array( 'post', 'page' ),   // 表示する投稿タイプ
		'label'     => 'ファイルのテストです',               // ラベル
		'notes'     => 'ここに注記を入れてください',        // 注記
	),
```

## 関連ターム
<img width="727" alt="Screen Shot 2017-01-07 at 16.19.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/47327/da7ae6e7-039e-7a4d-99b1-7adb22bfd155.png">

```php
	array(
		'type'      => 'taxonomy',                       // タイプ
		'name'      => 'scf-13',                         // 名前
		'taxonomy' => array( 'category', 'post_tag' ),   // 表示するタクソノミー
		'label'     => 'ファイルのテストです',               // ラベル
		'notes'     => '注釈',        // 注記
	),
```

# 呼び出し条件


# 戻り値
# フック