in Code, Smart Custom Fields, WordPress

Smart Custom Fieldsで特定の固定ページだけでカスタムフィールドを表示する


WordPressのテーマカスタマイズをする時に必須なカスタムフィールドですが、カスタムフィールドを実装する時には必ずといっていいほどSmart Custom Fieldsを利用しています。

管理画面から固定ページを選択することもできるのですが、カスタマイズやテーマ制作をおこなう時はなるべくコードで設定も完結したいため、PHPによるフィードの設定・管理ができる点もSmart Custom Fieldsを重宝している理由です。

IDの一致を条件として条件分岐することはできるのですが、パーマリンクなどで使われるスラッグをもとに条件分岐したい時はちょっと一工夫必要です。

Smart Custom Fieldsを有効化し下記コードをfunctions.phpに記載すると特定のスラッグのページに指定のカスタムフィールドを表示することができます。

function my_register_fields($settings, $type, $id, $meta_type) {
	// パーマリンクがslugとなっているページのIDを取得
	$page_object = get_page_by_path("slug");
	$page_id = $page_object->ID;

	// 取得したスラッグであれば下記のフィールドを表示
	if ( $id == $page_id ) { 
		$Setting = SCF::add_setting('id-1', 'メタボックスのタイトル');
		$Setting->add_group('slug_group', false, array(
			array(
				'type'        => 'text',
				'name'        => 'slug_name',
				'label'       => '名前',
			),

			array(
				'name' => 'slug_thumb',
				'label' => 'サムネイル',
				'type' => 'image',
				'size' => 'full',
				'notes' => '推奨サイズ 000x000', 
			),
		));
		$settings[] = $Setting;
	}
	return $settings;
}
add_filter('smart-cf-register-fields', 'my_register_fields', 10, 4);

コメントを書く

Comment

CAPTCHA