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