MENU

add_screen_option()

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_typenews であることを確認
  • 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() でどんなオプションを追加できますか?

主に per_page(表示件数)オプションを追加できますが、他のカスタムオプションも追加可能です。ただし、追加したオプションを適切に処理するために set_screen_options フィルターを利用する必要があります。

add_screen_option() を適用するにはどのフックを使うべきですか?

load-edit.phpload-{ページID} のようなフックを使います。例えば、特定の管理画面だけに適用するには load-edit.php 内で get_current_screen() を使って制御します。

カスタムオプションの値はどこに保存されますか?

各ユーザーごとの wp_usermeta テーブルに保存されます。get_user_option() を使うと取得できます。

まとめ

add_screen_option() は、WordPress の管理画面の「表示オプション」セクションにカスタム設定を追加するための関数です。

主に投稿一覧ページの表示件数を管理者が変更できるようにする目的で使用されます。適用するには load-edit.php のような適切なフックを利用し、set_screen_options フィルターと組み合わせてデータを適切に処理する必要があります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次