このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています

WordPressでSNS関連の独自オプションを管理画面に制作する

管理画面にSNSの独自オプションを置きたい場合は次のようなコード追加で実現できます。

<?php
/**
 * SnsOptionsクラス
 *
 * SNS関連の設定を保存、表示用に使用
 *
 * ▼WordPressCodex日本語版の設定ページ作成参考
 * https://wpdocs.osdn.jp/%E8%A8%AD%E5%AE%9A%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90
 */
class SnsOptions {

	private $options;

	public function __construct() {
		add_action( 'admin_menu', array( $this, 'add_option_page' ) );
		add_action( 'admin_init', array( $this, 'page_init' ) );
	}

	public function add_option_page() {
		add_options_page(
			'SNS',
			'SNS設定',
			'manage_options',
			'my-opitons-sns.php',
			array( $this, 'create_option_page' )
		);
	}

	public function create_option_page() {
		$this->options = get_option( 'my_sns_options' );
?>
<div class="wrap">
	<h1>SNS設定</h1>
	<form action="options.php" method="post">
		<?php
		settings_fields( 'sns_settings_group' );
		do_settings_sections( 'my-options-sns.php' );
		submit_button();
		?>
	</form>
</div>
<?php
	}

	public function page_init() {

		register_setting(
			'sns_settings_group',
			'my_sns_options',
			array( $this, 'sanitize' )
		);

		add_settings_section(
			'settings_section_sns',
			'SNS関連オプション',
			array( $this, 'print_section_info' ),
			'my-options-sns.php'
		);

		add_settings_field(
			'fb_app_id',
			'facebookアプリID',
			array( $this, 'print_fb_app_id' ),
			'my-options-sns.php',
			'settings_section_sns'
		);

	}

	/**
	 * データの無害化
	 */
	public function sanitize( $input ) {
		//
	}

	/**
	 * セクションの説明文
	 */
	public function print_section_info() {
		//
	}

	/**
	 * facebook アプリIDの入力エリア表示
	 */
	public function print_fb_app_id() {
		printf(
			'<input type="text" id="fb_app_id" name="my_sns_options[fb_app_id]" value="%s" />',
			isset( $this->options['fb_app_id'] ) ? esc_attr( $this->options['fb_app_id'] ) : ''
		);
	}
}