WordPress管理画面のヘルプを追加・削除する方法

ヘルプをカスタマイズするにはWP_Screenクラスのメソッドを利用する

contextual_help filter hook

wordpressの管理画面には右上にヘルプを表示するための機能が備わっている。

設定ページ付きのプラグインを開発した場合には、そのページ専用のヘルプを作成する必要が生じたり、既存のページの標準のヘルプ自体を非表示にしたいといった要件が発生するかもしれないし、制作を依頼された場合には、オリジナルのヘルプを作成して納品する作業が発生するかもしれない。そのような場合には、contextual_helpフィルターフックを利用すると希望どおりのヘルプを作成できる。

フィルターフックなので、以下のようにしてフックした。

add_filter('contextual_help', array($this, 'admin_help_setting'), 900, 3);

独自関数admin_help_setting内でヘルプを新規追加したり削除したりする処理を書くことになる。

contextual_helpの使い方

wordpressシステムで退会ページと退会処理を簡単に実装のエントリーで、退会処理について書いてみた。その中で管理画面の

設定 → 退会処理

というページを作成したので、そのページにヘルプを新規に追加してみようと思う。また、退会処理以外のページについては、ヘルプ項目を削除(非表示)にしてみたいと思う。

$screen_idの確認

admin_help_settingでは、以下のように引数を渡してあげる。$screen_idの値でページを判定できるので、var_dumpなどで各ページの$screen_idを確認してみるとイメージをしやすくなる。

function admin_help_setting($help, $screen_id, $screen){
    // var_dump($screen_id);
}

$screen_idの一例としては以下のようになっている。

  • 固定ページ → edit-page
  • 外観 → themes

そして、今回ヘルプを作成しようとしている退会処理のページの$screen_idは、

settings_page_seeyou

となっている。そのため、以下のようにコードを変えてみる。

function admin_help_setting($help, $screen_id, $screen){

	if( $screen_id == "settings_page_seeyou" )
	{
            // 退会ページのヘルプ
	}
	
	else
	{
            // それ以外のページ
	}
}

add_help_tabメソッドと引数

新しく管理画面に追加した退会処理ページにヘルプを追加するには以下のようにする。

$tabs = array(
	array(
		'title' => '概要',
		'id' => 'outline',
		'content' => '<p>退会ヘルプの概要</p>'
	),
	array(
		'title' => '退会方法',
		'id' => 'leave',
		'callback' => array($this, 'get_messages')
	)
);
 
foreach($tabs as $tab) {
	$screen->add_help_tab($tab);
}

表示を確認すると以下のようにヘルプがブログ管理画面に追加される。

wp-add-help-tab

配列$tabsの項目を増やしていくことでタブを追加することが可能になっている。二つ目の配列では、callbackを利用して長めのメッセージを外の関数に分けている。get_messagesはadmin_help_settingとは分けて書く。

function get_messages()
{
	echo "<p>退会処理の詳細な説明</p>";
}

callback-get_messages

callbackを利用してメッセージを分けることができる。

set_help_sidebar

表示されるヘルプの右側にサイドバーを表示することができる。そのためにはset_help_sidebarメソッドを利用する。

$screen->set_help_sidebar('<a href="#">Q&Aサイトへ</a>');

ヘルプの表示は以下のようになる。

wordpress-set-help-sidebar

remove_help_tabs

新規に追加した退会処理ページにヘルプを追加する方法を上に書いてみた。最後に退会処理ページ以外は、ヘルプを非表示にしてみる。remove_help_tabsメソッドでヘルプを削除可能。

$screen->remove_help_tabs();
return $help;

上のコードをcontextual_helpフィルターフックに書いておくとヘルプは非表示になる。

ヘルプは管理画面の地味な部分だがwordpressをやるなら知っておきたいノウハウだ。