Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

WordPressのプラグイン、Smart Custom Fields (SCF)を使ってみました。
カスタムフィールドを使えるようになると「これで何でもWordPressでシステム開発できちゃう俺TUEEEE」って気持ちになりますね。楽しいです。
SCFもそんなカスタムフィールド用のプラグインで、ACFでは有料な繰り返し項目がデフォルトで付いて来ます。便利ですね。

以前にお話を聞いていて使ってみたいなと思っていまして、機会があったので使っています。

その中の一部で、カスタムフィールドの定義について調査とまとめです。

Smart Custom Fields でカスタムフィールドの定義を Git で管理できるようになりました!

呼び出し

コードの定義の呼び出しは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);

タイプ

コードをここに。
https://gist.github.com/yousan/643aac32e0f2932e37960414d045af25

テキスト

Screen Shot 2017-01-07 at 16.17.35.png

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

真偽値

Screen Shot 2017-01-07 at 16.18.14.png

    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

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

チェックボックス

Screen Shot 2017-01-07 at 16.18.26.png

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

    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

    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

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

画像 

Screen Shot 2017-01-07 at 16.18.51.png

    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

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

カラーピッカー

Screen Shot 2017-01-07 at 16.19.04.png

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

デイトピッカー

Screen Shot 2017-01-07 at 16.19.10.png

    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

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

関連ターム

Screen Shot 2017-01-07 at 16.19.21.png

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

呼び出し条件

戻り値

フック

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away