Skip to content

Instantly share code, notes, and snippets.

@kurozumi
Last active March 7, 2016 23:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kurozumi/cd08ae091dfbc85b3b8f to your computer and use it in GitHub Desktop.
Save kurozumi/cd08ae091dfbc85b3b8f to your computer and use it in GitHub Desktop.
【WordPress】自作プラグインに管理メニューを追加するためのテンプレート(ひな形)
<?php
/**
* Plugin Name: My Admin Menu
* Version: 0.1-alpha
* Description: PLUGIN DESCRIPTION HERE
* Author: kurozumi
* Author URI: http://a-zumi.net
* Plugin URI: PLUGIN SITE HERE
* Text Domain: my-custom-admin
* Domain Path: /languages
* @package My-custom-admin
*/
$my_plugin = new My_Admin_Menu;
$my_plugin->set_menu_title("ssssssss");
class My_Admin_Menu
{
private $page_title;
private $menu_title;
private $capability;
public function __construct()
{
add_action("plugins_loaded", array($this, "plugins_loaded"));
}
public function plugins_loaded()
{
add_action("admin_menu", array($this, "admin_menu"));
}
/**
* 管理メニュー追加
*/
public function admin_menu()
{
$hookname = add_menu_page(
__($this->get_page_title(), sanitize_title(get_class($this))),
__($this->get_menu_title(), sanitize_title(get_class($this))),
$this->get_capability(),
basename(__FILE__, ".php"),
array($this, "admin_page")
);
add_action(sprintf("admin_print_styles-%s", $hookname), array($this, "admin_print_styles"));
add_action(sprintf("admin_print_scripts-%s", $hookname), array($this, "admin_print_scripts"));
}
/**
* 追加した管理メニュー専用のスタイルシートを設定
*/
public function admin_print_styles(){
?>
<style type="text/css">
</style>
<?php
}
/**
* 追加した管理メニュー専用のjavascriptを設定
*/
public function admin_print_scripts(){
?>
<script type="text/javascript">
</script>
<?php
}
/**
* メニューページのコンテンツを表示
*/
public function admin_page(){
?>
<div class="wrap">
<h2><?php echo $this->get_page_title();?></h2>
</div>
<?php
}
/**
* メニューページのタイトルを取得
* @return type
*/
public function get_page_title()
{
return ($this->page_title == null) ? get_class($this) : $this->page_title;
}
/**
* メニューページのタイトルを設定
* @param type $title
*/
public function set_page_title($title)
{
$this->page_title = $title;
}
/**
* メニュー名を取得
* @return type
*/
public function get_menu_title()
{
return ($this->menu_title == null) ? get_class($this) : $this->menu_title;
}
/**
* メニュー名を設定
* @param type $title
*/
public function set_menu_title($title)
{
$this->menu_title = $title;
}
/**
* メニューを表示する権限を取得
* @return type
*/
public function get_capability()
{
return ($this->capability == null) ? "administrator" : $this->capability;
}
/**
* メニューを表示する権限を設定
* @param type $capability
*/
public function set_capability($capability)
{
$this->capability = $capability;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment