(26) 【WORDPRESS】独自CSS設定プラグインを作成

投稿者: | 2017年8月27日

1,108 views

この記事は最終更新から 2063日 が経過しています。

前回の (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を使えば簡単に実現できるので、後で組み込む。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)