web-dev-qa-db-ja.com

ページごとの投稿のデフォルトの画面オプション値を変更する

pendingモードで投稿を一覧表示するときに、wp-admin領域のページごとの投稿のデフォルトの画面オプション値を変更したいです。デフォルト値は20に設定されています。

[画面のオプション]タブで値を直接変更してもユーザーにのみ影響があり、 this answer のようなすべてのユーザーには影響しません。

実行可能な解決策はありますか?

1

@KrzysiekDróżdż答え への単なる中毒。

特定の投稿ステータスを表示するときは、URLクエリ文字列変数'post_status'がステータスの名前に設定されるので、$_GET['post_status']を使用して@KrzysiekDróżdżコードの効果を保留中の投稿に限定することができます。

function my_edit_per_page( $result, $option, $user ) {
  $status = filter_input( INPUT_GET, 'post_status', FILTER_SANITIZE_STRING );
  if ( $status === 'pending' && (int) $result < 1 )
  return 20; // or whatever you want
}
add_filter( 'get_user_option_edit_post_per_page', 'my_edit_per_page', 10, 3 );  // for posts
2
gmazzap

それほど難しいことではありません。これをfunctions.phpまたはプラグインに追加するだけです。

function my_edit_per_page( $result, $option, $user ) {
    if ( (int)$result < 1 )
        return 20; // or whatever you want
}
add_filter( 'get_user_option_edit_page_per_page', 'my_edit_per_page', 10, 3 );  // for pages
add_filter( 'get_user_option_edit_post_per_page', 'my_edit_per_page', 10, 3 );  // for posts

このようにしてデフォルト値を変更します。したがって、ユーザーがそれを変更しても、ユーザーの選択は記憶されます。

唯一の問題は、この設定がポストタイプエディタ全体に共通であるということです。投稿の状況に応じて設定するのはそれほど簡単ではない(そして何も壊れていない)と思う。

3