プラグインの管理画面でHTMLの入力を許すフィールドの扱い方

プラグインの管理画面でHTMLの入力を許すフィールドの扱い方

ワードプレスのプラグインを書いていると、HTMLタグを入力できるフィールドを作りたくなりますよね?
例えば、ページにデータを表示するときにその書式を入力さえるとか。

例えば、これはワードプレスのプラグインで動くシステムですが、テーマによっては出力書式を変えたくなる場合があるので、その書式をHTMLで入力させる世にした管理画面です。



プラグインの管理画面の流れ


構造としてはこんな感じになります。

action が入っていたら「データベースに入力フィールドを出力」
   ↓
「データベースから入力フィールドを読み込む」
   ↓
入力用表示

データベースに入力フィールドを出力

	if( isset($_POST['action']) ){
		update_option('unkenv_placelist', $_POST['unkenv_placelist']);
			:
	}

「データベースから入力フィールドを読み込む」

	$unkenv_placelist = get_option('unkenv_placelist');
		:


入力表示

<input type="text" name="unkenv_placelist" id="unkenv_placelist" 
	value="<?php echo $unkenv_placelist; ?>">


textarea で html タグの入力を許可する

textarea で html タグの入力を許可する場合、データベースからフィールドの値を読み込んだ直後に加工します。
つまり、< > を 特殊記号に置き換えます。
wp_specialchars_decode という関数がそれをやってくれます。

「データベースから入力フィールドを読み込む」

	$unkenv_placelist = get_option('unkenv_placelist');
	$unkenv_placelist = wp_specialchars_decode( $unkenv_placelist , ENT_QUOTES );

入力表示

<textarea name="unkenv_placelist" id="unkenv_placelist" 
	cols="40" rows="5"><?php echo $unkenv_placelist; ?></textarea>

wp_specialchars_decode の仕様

書式
string wp_specialchars_decode( string $string [ , mixed $quote_style = ENT_NOQUOTES ] )

$quote_style変換内容変換結果
ENT_NOQUOTES< > &&lt; &gt; &amp;
ENT_QUOTES< > & ‘ ” &lt; &gt; &amp; ‘ ”
ENT_COMPAT< > & ” &lt; &gt; &amp; ”
‘single’< > & ‘ &lt; &gt; &amp; ‘


データベースに保存した HTML タグを取り出して表示する。


	$unkenv_placelist = get_option('unkenv_placelist');
	$unkenv_placelist = wp_unslash(get_option(‘unkenv_placelist’));
			:
	echo $unkenv_placelist;

データベースから値を読みだすと ” と ‘ の前に \ が付いてきます。
この \ を削除するのが wp_unslash という関数です。

毎度毎度忘れるので記録しておきます。



スポンサーリンク