add_screen_option()
は、WordPress の管理画面で表示される「表示オプション」にカスタム設定を追加するための関数です。
これにより、管理画面の一覧ページで表示する項目数を変更したり、カスタムオプションを追加することができます。
この関数は、特定の管理画面のカスタマイズを行うプラグインやテーマを開発する際に役立ちます。
目次
機能の説明
add_screen_option()
は、WordPress の管理画面で「表示オプション」セクションに新しい設定を追加できる関数です。通常、投稿やカスタム投稿の一覧ページでは「表示件数」を変更するオプションがありますが、これを独自にカスタマイズすることができます。
どういうときに使うか?
- カスタム投稿一覧の表示件数を変更可能にする
- 管理画面に独自のカスタムオプションを追加する
- カスタムテーブルの表示件数を管理者が調整できるようにする
シンプルなコード例
function my_custom_screen_options() {
add_screen_option('per_page', array(
'label' => 'カスタム投稿の表示数',
'default' => 20,
'option' => 'custom_post_per_page'
));
}
add_action('load-edit.php', 'my_custom_screen_options');
function my_custom_screen_options() {
add_screen_option('per_page', array(
'label' => 'カスタム投稿の表示数',
'default' => 20,
'option' => 'custom_post_per_page'
));
}
add_action('load-edit.php', 'my_custom_screen_options');
'per_page'
:表示件数のオプションを追加'label'
:表示オプションのラベル'default'
:デフォルトの表示件数(ここでは20)'option'
:保存するオプションの名前
このコードを適用すると、管理画面の「表示オプション」に「カスタム投稿の表示数」が追加され、管理者が自由に変更できるようになります。
使い方の説明
基本的な使い方
カスタム投稿タイプ news
の一覧画面に表示件数のオプションを追加する場合の例です。
function news_screen_options() {
$screen = get_current_screen();
if ($screen->post_type === 'news') {
add_screen_option('per_page', array(
'label' => 'ニュースの表示件数',
'default' => 15,
'option' => 'news_per_page'
));
}
}
add_action('load-edit.php', 'news_screen_options');
get_current_screen()
を使って現在の画面情報を取得$screen->post_type
がnews
であることを確認add_screen_option()
を使用して、表示件数オプションを追加
一緒に使うことが多い関連タグ
get_current_screen()
現在の管理画面の情報を取得する関数。
$screen = get_current_screen();
if ($screen->id === 'edit-news') {
// カスタム投稿「news」の編集画面で特定の処理を実行
}
set_screen_options()
カスタムオプションの値を処理するためのフック。
function save_screen_options($status, $option, $value) {
if ($option == 'news_per_page') {
return $value;
}
return $status;
}
add_filter('set-screen-option', 'save_screen_options', 10, 3);
追加情報で取得したい場合
現在の表示件数を取得
保存された表示件数を取得し、カスタムクエリで使用する。
$news_per_page = get_user_option('news_per_page', get_current_user_id());
$query = new WP_Query(array(
'post_type' => 'news',
'posts_per_page' => $news_per_page ? $news_per_page : 10
));
すべての表示オプションを取得
現在の管理画面のすべての表示オプションを取得する方法。
$screen = get_current_screen();
$options = get_user_meta(get_current_user_id(), "screen_options_$screen->id", true);
print_r($options);
想定されるトラブル
オプションが保存されない
解決方法
set_screen_options
フィルターを正しく追加しているか確認add_screen_option()
を適切なフック(load-XXX.php
)で実行しているか確認
カスタム投稿タイプの管理画面に適用されない
解決方法
get_current_screen()->post_type
の値をデバッグして確認add_screen_option()
の呼び出しがload-edit.php
に適用されているか確認
Q&A
まとめ
add_screen_option()
は、WordPress の管理画面の「表示オプション」セクションにカスタム設定を追加するための関数です。
主に投稿一覧ページの表示件数を管理者が変更できるようにする目的で使用されます。適用するには load-edit.php
のような適切なフックを利用し、set_screen_options
フィルターと組み合わせてデータを適切に処理する必要があります。
コメント