Skip to content

Instantly share code, notes, and snippets.

@yousan
Last active February 8, 2018 08:30
Show Gist options
  • Save yousan/643aac32e0f2932e37960414d045af25 to your computer and use it in GitHub Desktop.
Save yousan/643aac32e0f2932e37960414d045af25 to your computer and use it in GitHub Desktop.
<?php
/**
* Smart Custom Fieldsの定義用クラス
* グループごとにメソッドを作ると良い
*
* @link https://2inc.org/blog/2015/03/12/4670/
*/
Class Test_SmartCustomFields {
/**
* ロードするメソッド名を配列で列挙する。
* add_filterされます。
*
* @var String[]
*/
private static $load_groups = array(
'test',
);
/**
* このクラス内にあるメソッドをロードさせるようにする。
*/
public static function load_scf_groups() {
foreach ( self::$load_groups as $group ) {
add_filter( 'smart-cf-register-fields',
array( __CLASS__, $group ), 10, 4 );
}
}
public static function test( $settings, $type, $id, $meta_type ) {
if ( $type !== 'page' ) {
return $settings;
}
/** @var Smart_Custom_Fields_Setting $Setting */
$Setting = SCF::add_setting( 'test-group-1', '固定ページ用テスト' );
// $Setting->add_group( 'ユニークなID', 繰り返し可能か, カスタムフィールドの配列 );
$Setting->add_group( 'front-page-slider', false, array(
array(
'type' => 'text', // タイプ
'name' => 'scf-1', // 名前
'label' => 'テキストのテストです', // ラベル
'default' => 'デフォルト値', // デフォルト
'instruction' => '説明文です。', // 説明文
'notes' => 'ここに注記を入れてください' // 注記
),
array(
'type' => 'boolean', // タイプ
'name' => 'scf-2', // 名前
'label' => '真偽値のテストです', // ラベル
'default' => true, // デフォルト true or false
'true_label' => 'はい', // TRUE ラベル
'false_label' => 'いいえ', // FALSE ラベル
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'textarea', // タイプ
'name' => 'scf-3', // 名前
'label' => 'テキストエリアのテストです', // ラベル
'default' => 'デフォルトのテキストです', // デフォルト
'rows' => 5, // 行数
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'check', // タイプ
'name' => 'scf-4', // 名前
'label' => 'チェックボックスのテストです', // ラベル
'choices' => array(
'key' => 'value',
'キー' => '値',
// 'ダブルアローがない場合', // エラーになります
'選択肢1' => '値1',
'選択肢2' => '値2',
'apple' => 'りんご',
'banana' => 'バナナ',
),
'check_direction' => 'horizontal', // 表示方向 vertical or horizontal
// デフォルト値。連想配列キー名を入れます。
'default' => array( 'apple', 'banana' ),
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
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' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'select', // タイプ
'name' => 'scf-5', // 名前
'label' => 'ラジオボタンのテストです', // ラベル
'choices' => array(
'key' => 'value',
'キー' => '値',
// 'ダブルアローがない場合', // エラーになります
'選択肢1' => '値1',
'選択肢2' => '値2',
'apple' => 'りんご',
'banana' => 'バナナ',
),
'default' => 'apple', // デフォルト値。
'instruction' => 'ここにテキストを入力してください。', // 説明文
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'file', // タイプ
'name' => 'scf-7', // 名前
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'image', // タイプ
'name' => 'scf-8', // 名前
'size' => 'full', // プレビューサイズ full, thumbnail, medium or large
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'wysiwyg', // タイプ
'name' => 'scf-9', // 名前
'default' => '<blink>デフォルトの内容です</blink>', // default
'label' => 'WYSIWYGエディタのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'colorpicker', // タイプ
'name' => 'scf-10', // 名前
'default' => '#937cf9', // デフォルト値をRGBで
'label' => 'カラーピッカーのテストです。', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'date', // タイプ
'name' => 'scf-11', // 名前
'default' => '2017/01/01', // デフォルト値
'date_format' => 'yy/mm/dd', // 日付のフォーマット。画面とデータベースの値の両方に影響します。
'max_date' => '+100y', // デイトピッカーで表示されるカレンダーの未来の最大値
'min_date' => '-100y',
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'relation', // タイプ
'name' => 'scf-12', // 名前
'post-type' => array( 'post', 'page' ), // 表示する投稿タイプ
'label' => 'ファイルのテストです', // ラベル
'notes' => 'ここに注記を入れてください', // 注記
),
array(
'type' => 'taxonomy', // タイプ
'name' => 'scf-13', // 名前
'post-type' => array( 'category', 'tag' ), // 表示するタクソノミー
'label' => 'ファイルのテストです', // ラベル
'notes' => '注釈', // 注記
),
) );
$settings[] = $Setting;
return $settings;
}
/**
* 管理画面のメニューを作成する。
*
* @link https://2inc.org/blog/2016/06/06/5280/
*/
public static function create_admin_menu() {
/**
* @param string $page_title ページのtitle属性値
* @param string $menu_title 管理画面のメニューに表示するタイトル
* @param string $capability メニューを操作できる権限(manage_options とか)
* @param string $menu_slug オプションページのスラッグ。ユニークな値にすること。
* @param string|null $icon_url メニューに表示するアイコンの URL
* @param int $position メニューの位置
*/
SCF::add_options_page( 'カスタムオプション', 'カスタムオプション', 'manage_options', 'custom-options' );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment