add_posts_page()
は、WordPress の管理画面の「投稿」メニューに独自のサブメニューを追加する関数です。
投稿関連のカスタム設定ページを作成する際に使用され、管理者や編集者が特定の機能を簡単に操作できるようにする目的で利用されます。主に、投稿に関連した設定を追加するために使われます。
目次
機能の説明
add_posts_page()
は、WordPress の管理画面の「投稿」メニューの中にカスタム設定ページを追加します。この関数を使用すると、投稿に関する設定を簡単に管理できるようになります。
主な用途
- 「投稿」メニューの中に独自の設定ページを追加する
- 投稿に関するカスタム設定を提供する
- 記事の管理に必要なカスタムオプションを実装する
この関数は admin_menu
フックと一緒に使われることが一般的です。
シンプルなコード例
以下のコードは、「投稿」メニューに「カスタム投稿設定」というサブメニューを追加します。
add_action('admin_menu', function() {
add_posts_page(
'カスタム投稿設定', // ページタイトル
'カスタム投稿設定', // メニュータイトル
'manage_options', // 必要な権限
'custom-posts-settings', // メニューのスラッグ
function() { // コールバック関数
echo '<h1>カスタム投稿設定ページ</h1>';
echo '<p>ここに投稿に関する設定を追加できます。</p>';
}
);
});
'カスタム投稿設定'
:管理画面の「投稿」メニューの中に表示される項目名'manage_options'
:このページを表示できる権限(管理者のみ)'custom-posts-settings'
:ページのスラッグ(URLの一部)function() { ... }
:ページの内容を表示するコールバック関数
使い方の説明
投稿設定ページを作成する
以下のコードは、「投稿」メニューに「投稿設定ページ」を追加し、専用の設定画面を作成します。
function my_post_menu() {
add_posts_page(
'投稿設定ページ',
'投稿設定ページ',
'manage_options',
'my-posts-settings',
'my_posts_settings_page'
);
}
add_action('admin_menu', 'my_post_menu');
function my_posts_settings_page() {
?>
<div class="wrap">
<h1>投稿設定</h1>
<form method="post" action="options.php">
<?php
settings_fields('my_post_options');
do_settings_sections('my-posts-settings');
submit_button();
?>
</form>
</div>
<?php
}
add_posts_page()
をadmin_menu
フックで実行し、設定ページを追加my_posts_settings_page()
でページのコンテンツを作成settings_fields()
とdo_settings_sections()
を使って設定項目を表示submit_button()
で設定を保存するボタンを表示
一緒に使うことが多い関連タグ
add_menu_page()
管理画面のサイドメニューに独自のメニューを追加する。
add_menu_page(
'カスタムメニュー',
'カスタムメニュー',
'manage_options',
'custom-menu',
'custom_menu_page'
);
add_submenu_page()
既存のメニューのサブメニューを追加する。
add_submenu_page(
'edit.php',
'カスタム投稿ツール',
'カスタム投稿ツール',
'manage_options',
'custom-post-tool',
'custom_post_tool_page'
);
add_meta_box()
投稿編集画面に独自のメタボックスを追加する。
add_action('add_meta_boxes', function() {
add_meta_box(
'custom_meta_box',
'カスタムメタボックス',
'custom_meta_box_callback',
'post'
);
});
追加情報で取得したい場合
現在の管理画面ページの情報を取得する
管理画面のどのページにいるかを取得するには get_current_screen()
を使います。
add_action('admin_menu', function() {
$screen = get_current_screen();
if ($screen->id === 'posts_page_my-posts-settings') {
// 特定の投稿設定ページでのみ実行
}
});
出力例
stdClass Object
(
[id] => posts_page_my-posts-settings
[base] => edit
[parent_base] => edit
)
想定されるトラブル
設定ページが表示されない
解決方法
admin_menu
フックを正しく設定しているか確認する。manage_options
の権限を持つユーザーでログインしているか確認する。- メニューのスラッグが他のプラグインと重複していないか確認する。
Q&A
まとめ
add_posts_page()
は、WordPress の管理画面の「投稿」メニューの中に独自の設定ページを追加するための関数です。
投稿の管理やカスタム設定を提供する際に便利です。他の管理画面関連関数(add_menu_page()
や add_submenu_page()
)と組み合わせることで、より高度な設定ページを作成できます。
コメント