[ WordPress Plugin class ] なんて 検索すると いろいろな記事があり
流し読みして 適当に作ったら 動いてしまったので あまり良くわからずに 作っていました

今回 もう少し調べて 自分なりに 使いやすい テンプレート を 考えてみたいと思います

なぜ 今回調べることにしたのかというと
フィルター や アクション で フックする時 うまく動作しない という事があったので
良い方法を 考えてみよう と なったのです

ただ これが 本当に 良いものかどうかと問われるとよくわからないです
ですので 参考程度に 見てください

defined( 'ABSPATH' ) || exit;

if( ! class_exists( 'jr_test_class' ) ) {
  class jr_test_class {

    const PLUGIN_SLUG   = 'jr_test_class';
    const PLUGIN_OPTION = 'jr_test_class_option';

    const PLUGIN_PREFIX = 'jr-test_class-';

    const EVENT_PREFIX  = 'jr_test_class_';

    protected $option = array();

    //-----------------------

    protected static $instance = [];

    public static function getInstance() {
      return static::$instance[static::class] ?? static::$instance[static::class] = new static();
    }

    //-----------------------

    private final function __construct() {
      add_action( 'init', array( $this, 'init' ) );
    }

    //-----------------------

    function init() {

      load_plugin_textdomain( self::PLUGIN_SLUG, false, plugin_basename( dirname( __FILE__ ) ) . '/assets/languages' );

      //-----------------------

      $prefix = self::PLUGIN_PREFIX;

      $option_get = get_option( self::PLUGIN_OPTION );
      $this->option = wp_parse_args( $option_get, self::defaults() );
      $option = $this->option;

      //-----------------------

      {処理}

    }

    static function defaults() {

      $plugin_prefix = self::PLUGIN_PREFIX;

      $defaults = array(

        $plugin_prefix . 'setting' => true,

      );

      return apply_filters( $plugin_prefix . 'defaults', $defaults );
    }
    
  }

  jr_test_class::getInstance();

}

これが 私が考えた テンプレート です

ここを こう変えると 良いよ とか なんでこうなっているの?? とか 気軽に コメント下さい