1,729 views
この記事は最終更新から 2662日 が経過しています。
前回の (25) WordPressで設定画面付きプラグインを作成 では、任意のパラメータを WordPressの DB(wp_optionテーブル)に保存する方法を学習した。
今回はこれを応用し、少しだけ実用的なプラグインを作ってみる。
■やりたいこと
今までは 「外観」-「テーマの編集」に独自CSSを追記していたが、これだとテーマを変えたときに設定が引き継がれない。
「外観」-「カスタマイズ」-「追加CSS」もあるが、こちらは編集欄が狭い上にテーマを変えたときに設定が引き継がれない。
すなわち、テーマの編集とは別のところで独自CSSを設定したい。
■プログラム
wp_head()をフックし、このタイミング(=</ head>出力直前のタイミング)で独自CSSを出力する。
設定データはDBの wp_optionテーブルに my_add_cssという名前で保存する。
他のフック関数よりも後でCSS出力させるために priorityを大きめ(999)にしている。
<?php
/* Plugin Name: AddCSS */
////////////////////////////////////////////////////////////////////////
if (class_exists('AddCSS')) {
$obj = new AddCSS();
}
////////////////////////////////////////////////////////////////////////
class AddCSS {
//////////////////////////////////////////////////////////////////////
public function __construct() {
add_action('wp_head', array($this,'proc_my_add_css'), 999);
add_action('admin_menu', array($this,'proc_create_menu'));
register_activation_hook( __FILE__, array($this, 'proc_plugin_activate'));
register_deactivation_hook(__FILE__, array($this, 'proc_plugin_deactivate'));
}
//////////////////////////////////////////////////////////////////////
public function proc_plugin_activate(){
add_option('my_add_css', '');
}
//////////////////////////////////////////////////////////////////////
public function proc_plugin_deactivate(){
delete_option('my_add_css');
}
//////////////////////////////////////////////////////////////////////
public function proc_my_add_css() {
$my_add_css = esc_attr(get_option('my_add_css'));
if(FALSE !== $my_add_css){
echo <<< EOM
<style>
{$my_add_css}
</style>
EOM;
}
}
//////////////////////////////////////////////////////////////////////
public function proc_create_menu() {
add_menu_page('AddCSS Settings', 'AddCSS Settings', 'administrator', __FILE__, array($this, 'proc_display_settings_page'));
add_action('admin_init', array($this, 'proc_register_settings'));
}
//////////////////////////////////////////////////////////////////////
public function proc_register_settings() {
register_setting('AddCSS-settings-group', 'my_add_css');
}
//////////////////////////////////////////////////////////////////////
public function proc_handle_sanitization($txt) {
return sanitize_text_field($txt);
}
//////////////////////////////////////////////////////////////////////
public function proc_display_settings_page() {
$my_add_css = esc_attr(get_option('my_add_css'));
?>
<div class="wrap">
<h2>AddCSS 独自CSSの追加設定</h2>
<form method="post" action="options.php">
<?php settings_fields('AddCSS-settings-group'); ?>
<?php do_settings_sections('AddCSS-settings-group'); ?>
<textarea name="my_add_css"><?php echo $my_add_css; ?></textarea>
<?php
submit_button();
?>
</form>
</div>
<?php
}
} // end of class
?>
■プラグイン登録
前回の (25) WordPressで設定画面付きプラグインを作成 を参照のこと。
できた!

たったこれだけのプラグインだけれども、個人的にはとっても満足です。
後でやること…
textareaの中でタブキー入力が使えない。
JavaScriptを使えば簡単に実現できるので、後で組み込む。
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2025-12-09: 0回 2025-12-08: 1回 2025-12-07: 0回 2025-12-06: 2回 2025-12-05: 1回 2025-12-04: 1回 2025-12-03: 1回