WordPress에서 작은 관리 페이지를 만드는 코드
대시보드 설정 페이지 코드 단순화
워드프레스에서는 테마에 관리용 항목을 설정하고 싶을 때가 있습니다.전용 플러그인을 만들지 않거나 과장하지 않아도 2~3개의 작은 옵션 항목만 설정할 때의 간단한 페이지 설정 관리 방법입니다.
참고로
설정 페이지 만들기(Codex)
이 페이지에서 소개한 설정 API를 사용하여 일반적인 설정 페이지를 만드는 코드를 써 보았습니다.
functions.php에 붙여서 사용합니다.
페이지 생성 코드 관리
functions.phpclass mySettingPage{
public static $key='my_option_name';//オプションへの保存、呼び出しキー
private $html_title='HTMLタグのtitle';//HTMLのタイトル(管理ページのtitleタグ)
private $page_title='ページのタイトル';//ページのタイトル
private $page_slug='my_option_page';
private $options;
private $group='my_option_group';
private $section='my_setting_admin';
//ここにキーとタイトル、コールバックをセットにして
public static function getFields(){
return array(
array(
'type'=>'section',//区切りを入れるときはtypeをセクションにする
'name'=>'section1',
'title'=>'入力してください',
'callback'=>'section_callback',
),
array(
'type'=>'field',//フィールドかセクション お好みに合わせて追加
'name'=>'item1',//名前
'title'=>'項目1',//タイトル
'callback'=>'text_callback',//コールバック
),
array(
'type'=>'field',
'name'=>'tel',
'title'=>'電話',
'callback'=>'text_callback',
),
array(
'type'=>'section',//区切りを入れるときはtypeをセクションにする
'name'=>'section2',
'title'=>'',
'callback'=>'section_callback',
),
array(
'type'=>'field',
'name'=>'address',
'title'=>'住所',
'callback'=>'text_callback',
),
);
}
//初期化
public function __construct(){
add_action('admin_menu',array($this,'add_my_option_page'));
add_action('admin_init',array($this,'page_init'));
}
//キーを取得(外部から呼び出せるようにする)
public static function getKey(){
return self::$key;
}
//設定
public function add_my_option_page(){
add_options_page(
$this->html_title,//ダッシュボードのメニューに表示するテキスト
$this->page_title,//ページのタイトル
'edit_themes',
$this->page_slug,//ページスラッグ
array( $this, 'create_admin_page' )
);
}
//フォームの外観作成
public function create_admin_page(){
// Set class property
$this->options = get_option($this->getKey());
?>
<div class="wrap">
<?php screen_icon(); ?>
<h2><?php echo $this->page_title;?></h2>
<p>テーマ用の設定項目</p>
<form method="post" action="options.php">
<?php
// This prints out all hidden setting fields
settings_fields($this->group);
do_settings_sections($this->section);
submit_button();
?>
</form>
</div>
<?php
}
//フォームの部品組み立て
public function page_init(){
register_setting(
$this->group, // Option group
$this->getKey(), // Option name
array( $this, 'sanitize' ) // Sanitize
);
$fields=$this->getFields();
$section_id='';
foreach($fields AS $field){
if($field['type']=='field'){
add_settings_section(
$field['name'], // ID
$field['title'], // Title
array($this,$field['callback']), // Callback
$this->section, // Page
$section_id
);
}else{
add_settings_section(
$field['name'], // ID
$field['title'], // Title
array($this,$field['callback']), // Callback
$this->section // Page
);
$section_id=$field['name'];
}
}
}
//保存前のサニタイズ
public function sanitize($input){
$new_input = array();
foreach($this->getFields() AS $field){
if(isset($input[$field['name']])){
$new_input[$field['name']] = sanitize_text_field($input[$field['name']]);
}
}
return $new_input;
}
//セクション表示関数
public function section_callback(array $args){
echo '<hr>';
}
//テキストフィール表示関数
public function text_callback(array $args){
$name=$args['id'];
printf(
'<input type="text" id="'.$name.'" name="'.$this->getKey().'['.$name.']" value="%s" />',
isset( $this->options[$name] ) ? esc_attr( $this->options[$name]) : ''
);
}
}
if(is_admin())
$my_settings_page = new mySettingPage();
사용 방법
class mySettingPage{
public static $key='my_option_name';//オプションへの保存、呼び出しキー
private $html_title='HTMLタグのtitle';//HTMLのタイトル(管理ページのtitleタグ)
private $page_title='ページのタイトル';//ページのタイトル
private $page_slug='my_option_page';
private $options;
private $group='my_option_group';
private $section='my_setting_admin';
//ここにキーとタイトル、コールバックをセットにして
public static function getFields(){
return array(
array(
'type'=>'section',//区切りを入れるときはtypeをセクションにする
'name'=>'section1',
'title'=>'入力してください',
'callback'=>'section_callback',
),
array(
'type'=>'field',//フィールドかセクション お好みに合わせて追加
'name'=>'item1',//名前
'title'=>'項目1',//タイトル
'callback'=>'text_callback',//コールバック
),
array(
'type'=>'field',
'name'=>'tel',
'title'=>'電話',
'callback'=>'text_callback',
),
array(
'type'=>'section',//区切りを入れるときはtypeをセクションにする
'name'=>'section2',
'title'=>'',
'callback'=>'section_callback',
),
array(
'type'=>'field',
'name'=>'address',
'title'=>'住所',
'callback'=>'text_callback',
),
);
}
//初期化
public function __construct(){
add_action('admin_menu',array($this,'add_my_option_page'));
add_action('admin_init',array($this,'page_init'));
}
//キーを取得(外部から呼び出せるようにする)
public static function getKey(){
return self::$key;
}
//設定
public function add_my_option_page(){
add_options_page(
$this->html_title,//ダッシュボードのメニューに表示するテキスト
$this->page_title,//ページのタイトル
'edit_themes',
$this->page_slug,//ページスラッグ
array( $this, 'create_admin_page' )
);
}
//フォームの外観作成
public function create_admin_page(){
// Set class property
$this->options = get_option($this->getKey());
?>
<div class="wrap">
<?php screen_icon(); ?>
<h2><?php echo $this->page_title;?></h2>
<p>テーマ用の設定項目</p>
<form method="post" action="options.php">
<?php
// This prints out all hidden setting fields
settings_fields($this->group);
do_settings_sections($this->section);
submit_button();
?>
</form>
</div>
<?php
}
//フォームの部品組み立て
public function page_init(){
register_setting(
$this->group, // Option group
$this->getKey(), // Option name
array( $this, 'sanitize' ) // Sanitize
);
$fields=$this->getFields();
$section_id='';
foreach($fields AS $field){
if($field['type']=='field'){
add_settings_section(
$field['name'], // ID
$field['title'], // Title
array($this,$field['callback']), // Callback
$this->section, // Page
$section_id
);
}else{
add_settings_section(
$field['name'], // ID
$field['title'], // Title
array($this,$field['callback']), // Callback
$this->section // Page
);
$section_id=$field['name'];
}
}
}
//保存前のサニタイズ
public function sanitize($input){
$new_input = array();
foreach($this->getFields() AS $field){
if(isset($input[$field['name']])){
$new_input[$field['name']] = sanitize_text_field($input[$field['name']]);
}
}
return $new_input;
}
//セクション表示関数
public function section_callback(array $args){
echo '<hr>';
}
//テキストフィール表示関数
public function text_callback(array $args){
$name=$args['id'];
printf(
'<input type="text" id="'.$name.'" name="'.$this->getKey().'['.$name.']" value="%s" />',
isset( $this->options[$name] ) ? esc_attr( $this->options[$name]) : ''
);
}
}
if(is_admin())
$my_settings_page = new mySettingPage();
너는 이런 느낌을 낼 수 있다
등록된 항목 사용
아래 코드로 호출
<?php $options=get_option(mySettingPage::getKey());?>
표시된 곳에서<?php echo esc_html($options['item1']);?>
<?php echo esc_html($options['tel']);?>
<?php echo esc_html($options['address']);?>
아주 간단한 내용이지만 주제를 만들다 보면 가끔씩 주제가 나름대로 가치가 있으면 좋겠다는 생각이 들기 때문에 이럴 때.웹 페이지 정보
설정 페이지 만들기(Codex)
add_settings_field 리셋 매개 변수
Reference
이 문제에 관하여(WordPress에서 작은 관리 페이지를 만드는 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shin1kt/items/76fb5ec7e2f754b9ada7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)