プラグイン一覧画面では各プラグイン毎に”有効化”、”停止”、”削除”などのリンクがあって各種操作が実行できますが、そのリンクにプラグインの設定画面へのリンクを追加する方法を確認しました。
ここでは、WordPressの管理画面の左サイドメニューにプラグインの設定メニューがある事を前提とし、そのプラグイン設定ページへのリンクをプラグイン操作画面に追加します。
トップレベルメニューにプラグイン設定メニューを追加する方法はこちら。
下記サイトを参考にしました。
Ten Things Every WordPress Plugin Developer Should Know
1)リンク先のプラグイン設定メニューのURLを確認
ここではプラグイン設定メニューが管理画面の左サイドメニューに登録されている事を前提としています。
左サイドメニューに登録されているプラグイン設定メニューのURLパスは、トップレベルメニューとサブメニューで異なり、それぞれ下記のようになります。
①設定メニューのサブメニューのプラグインページのURLパス
/wp-admin/options-general.php?page=[$menu_slugの値]
②トップレベルメニューのプラグインページのURLパス
/wp-admin/admin.php?page=[$menu_slugの値]
2)サンプルコード
下記仕様で作成しています。
・左サイドメニューのトップレベルメニューにプラグイン設定メニューが登録済み。
・そのメニューのスラグ名が’myplugin-settings’。
・プラグイン操作画面に”設定”という名前でプラグイン設定メニューへのリンク作成。
(サンプルコード)
add_filter('plugin_action_links', 'myplugin_plugin_action_links', 10, 2); function myplugin_plugin_action_links($links, $file) { static $this_plugin; if (!$this_plugin) { $this_plugin = plugin_basename(__FILE__); } if ($file == $this_plugin) { $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=myplugin-settings">設定</a>'; array_unshift($links, $settings_link); } return $links; }
3)サンプルコードの説明
①add_filter関数で’plugin_action_links’フィルターフックを登録
○add_filterの構文
add_filter( $tag, $function, $priority, $accepted_args );
$tag:フィルター名。
$function:フィルターが適用された際に呼び出される関数名。
$priority:特定のアクションを実行する関数の順序。数値が小さいほど早く実行。
$accepted_args:関数が受け取る引数の数。
●’plugin_action_links’フィルターフック
管理画面のプラグイン一覧画面でプラグイン名の下の有効化/停止リンクの横にリンクメニューを追加する。
②array_unshift
配列の最初に要素を加える。
③plugin_basename($file);
ファイル名からプラグインのベースネームを取得する。