Pluginのフォルダにファイルを作成し、ライセンス情報を記載する
/*
Plugin Name: CustomIndexBanner
Plugin URI: http://hpscript.com/blog/
Description: indexページに表示可能なバナーの設定
Version: 1.0.0
Author: Hpscript
Author URI: http://hpscript.com/blog/
License: MIt
*/
すると、プラグインとして自動で認識される
メニュー追加
add_action('init', 'CustomIndexBanner::init');
class CustomIndexBanner {
static function init(){
return new self();
}
function __construct(){
if(is_admin() && is_user_logged_in()){
add_action('admin_menu', [$this, 'set_plugin_menu']);
add_action('admin_menu', [$this, 'set_plugin_sub_menu']);
}
}
function set_plugin_menu(){
add_menu_page (
'カスタムバナー', // ページタイトル
'カスタムバナー', // メニュータイトル
'manage_options', // 権限
'custom-index-banner', // ページを開いたときのURL
[$this, 'show_about_plugin'], // メニューに紐づく画面を描画するcallback関数
'dashicons-format-gallery', // アイコン
99 // 表示位置オフセット
);
}
function set_plugin_sub_menu(){
add_submenu_page(
'custom-index-banner',
'設定',
'設定',
'manage_options',
'custom-index-banner-config',
[$this, 'show_config_form']
);
}
}
function show_about_plugin(){
$html = "<h1>カスタムバナー</h1>";
$html .= "<p>トップページに表示するバナーを指定できます</p>";
echo $html;
}
function show_config_form(){
?>
<h1>カスタムバナーの設定</h1>
<?php
}
}
### フォームの作成
const VERSION = '1.0.0';
const PLUGIN_ID = 'custom-index-banner';
const CREDENTIAL_ACTION = self::PLUGIN_ID . '-nonce-action';
const CREDENTIAL_NAME = self::PLUGIN_ID . '-nonce-key';
const PLUGIN_DB_PREFIX = self::PLUGIN_ID . '_';
function show_config_form(){
// wp_optionsを引っ張る
$title = get_option(self::PLUGIN_DB_PREFIX . "_title");
?>
<div class="wrap">
<h1>カスタムバナーの設定</h1>
<form action="" method='post' id="my-submenu-form">
<?php wp_nonce_field(self::CREDENTIAL_ACTION, self::CREDENTIAL_NAME) ?>
<p>
<label for="title">タイトル:</label>
<input type="text" name="title" value="<?= $title ?>"/>
</p>
<p><input type="submit" value="保存" class="button button-primary button-large"></p>
</form>
</div>
<?php
}
}
const CONFIG_MENU_SLIG = self::PLUGIN_ID . '-config';
function save_config(){
if(isset($_POST[self::CREDENTIAL_NAME]) && $_POST[self::CREDENTIAL_NAME]){
if(check_admin_referer(self::CREDENTIAL_ACTION, self::CREDENTIAL_NAME)){
$key =
$title = $_POST($value['title']) ? $_POST['title'] : "";
update_option(self::PLUGIN_DB_PREFIX . $key, $title);
$completed_text = "設定の保存が完了しました。管理画面にログインした状態で、トップページにアクセスし変更が正しく反映されたか確認してください。";
set_transient(self::COMPLETE_CONFIG, $completed_text, 5);
wp_safe_redirect(menu_page_url(self::CONFIG_MENU_SLUG), false);
}
}
}
なんやこれは。。。 プラグインの実装はテーマエディタではなく、プラグインのソースコードでカスタマイズすんのか。 時間かかるな。