WordPress の Plugin を クラス化 する時に気をつけること
[ 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(); }
これが 私が考えた テンプレート です
ここを こう変えると 良いよ とか なんでこうなっているの?? とか 気軽に コメント下さい