ローカルでの利用?自分でファイル置く?を想定。WordPressの公式リポジトリにはホストしない。
細かい実装はしないので、プラグインとして機能させる大枠のところまで。
[/plugins/hippo-plugin/hippo-plugin.php]
<?php
/*
Plugin Name: Hippo Plugin
Plugin URI: null
Description: null
Version: 1.0.0
Author: @hippohack
Author URI: https://www.hippohack.me
License: GPL2
*/
class HippoPlugin
{
static function init() {
return new self();
}
function __construct() {
if (is_admin() && is_user_logged_in()) {
add_action('admin_menu', [$this, '_hp_add_submenu']);
}
}
︙
function _hp_plugin_activate() {
// hoge
}
register_activation_hook
で初期化class外で実行。
ここで update_option
を使って初期データ入れておく。
register_activation_hook( __FILE__, ['HippoPlugin', '_hp_plugin_activate'] );
初回のインストール時のみ実行させるため、データを格納して判定する。
register_activation_hook
は再有効化時にも実行されるため。
function _hp_plugin_activate() {
if (!get_option('_hp_installed')) {
// something
update_option('_hp_installed', true);
}
}
■ 参考
admin_menu
フックを利用して add_submenu_page
を呼ぶメソッドをコール。add_submenu_page
_hp_admin_page
)class
function __construct() {
if (is_admin() && is_user_logged_in()) {
add_action('admin_menu', [$this, '_hp_add_submenu']);
}
}
function _hp_add_submenu() {
add_submenu_page('options-general.php', 'HippoPlugin Setting', 'HippoPlugin Setting', 8, __FILE__, [$this, '_hp_admin_page']);
}
function _hp_admin_page() {
require dirname(__FILE__) . '/hippo-plugin-admin.php';
}
■ 参考
class
public function __construct() {
add_action( 'save_post', array( $this, 'wpdocs_save_posts' ) );
}
function wpdocs_save_posts() {
// hoge
}
参考
追記
class
public function __construct() {
add_action( 'save_post', 'Klass::wpdocs_save_posts' );
}
update_option('key', 'value');
get_option('key')
_hp_admin_page
で読み込んでる hippo-plugin-admin.php
に記述。
[hippo-plugin-admin.php]
<form method="post" action="">
<input type="hidden" name="posted" value="true">
<table class="form-table">
<tr valign="top">
<th scope="row">_hp_hoge</th>
<td>
<input
type="text"
name="_hp_hoge"
value="<?php echo esc_attr( $settings->_hp_hoge ); ?>"
class="regular-text code"
>
<div><small>色は匂へど散りぬるを、我が世たれぞ常ならむ。有為の奥山今日越えて、浅き夢見じ、酔ひもせず。</small></div>
</td>
</tr>
︙
</table>
<?php settings_fields( 'hippo-plugin-settings' ); ?>
<?php do_settings_sections( 'hippo-plugin-settings' ); ?>
<?php submit_button(); ?>
</form>
settings_fields
、do_settings_sections
の設置が必須かな。
と言いつつ理解しておらず、register_setting
を使えてなかった。
function _hp_register_mysettings() {
register_setting( 'hippo-plugin-settings', 'one' );
register_setting( 'hippo-plugin-settings', 'two' );
register_setting( 'hippo-plugin-settings', 'three' );
}
て書いたが、ほんとに必要??
■ 追記
register_setting
を適切に使えば、update_optionの処理が不要。■ 参考
大枠こんなかんじ。
あとは必要な処理を付け足していく感じで。
最後までお読みいただき、ありがとうございました。
ご意見などありましたら@hippohackへDMをお願いいたします。