WordPress の管理画面の中で、記事一覧ページとメディア一覧ページで1ページ当たりの表示される件数を増やす方法についてメモ。
コード
早速ですがコードは以下。テーマの functions.php
に記述するかプラグインとしてインストールするかどちらでも。
<?php
// 投稿・固定ページ・カスタム投稿の一覧ページで有効
function variable_posts_per_page ($posts_per_page) {
return 100;
}
add_filter('edit_posts_per_page', 'variable_posts_per_page', 10, 1);
// メディア一覧ページで有効
function variable_attachment_per_page ($media_per_page) {
return 100;
}
add_filter('upload_per_page', 'variable_attachment_per_page', 10, 1);
フィルターフックを2つほど追加することで実現できました。なお、上述の例では共に1ページ当たり100件とました。
備考
上述のフィルターフックについていくつか気付いた点を書き留めておきます。
- 要微調整
- スペックやによって、データの量などに応じては表示件数が50件でも一覧表示でエラーを起こすことがある
- 300件では一括削除の際のGETリクエストのURIが長すぎて怒られることがある
edit_{$post_type}_per_page
- ドキュメント(edit_{$post_type}_per_page | Hook | WordPress Developer Resources)では
edit_post_per_page
の仲間としてedit_attachment_per_page
,edit_post_per_page
,edit_page_per_page
が例として挙げられています - しかし、
edit_posts_per_page
だけで投稿一覧ページだけでなく、固定ページ一覧ページやカスタム投稿一覧ページまで効力を発揮しました - 「固定ページだけ」のときは
edit_pages_per_page
、といったように「のみ」という場合は使い分け、全体で構わない場合はedit_posts_per_page
だけで良い、という感じの使い分けになりそうです
- ドキュメント(edit_{$post_type}_per_page | Hook | WordPress Developer Resources)では
- s
- 上述で
edit_attachment_per_page
,edit_post_per_page
,edit_page_per_page
を挙げましたし、ドキュメントやコアファイル(WordPress/post.php at af4b043a693fc7178ef8a1fcd0402f14fba0a040 · WordPress/WordPress · GitHub)でもそう書かれています - しかし、実際は edit_attachments_per_page, edit_posts_per_page でした。おそらく edit_page_per_page も edit_pages_per_page ではないかと思われます(
edit_pages_per_page
については未検証)
- 上述で
- メディア一覧ページ
- 上述で
edit_attachments_per_page
があったためこれが該当するのかと思いきや、効果なし - メディア一覧ページのフィルターフックは
upload_per_page
でした
- 上述で
特に s は気を付けないと見逃すので注意 (いずれも WordPress 5.7.1 で検証)。
2010年の edit_posts_per_page
と edit_post_per_page
についての Trac がありましたが、議論されているコードは wp-admin/includes/template.php
内のもので今回の wp-admin/includes/post.php
, wp_edit_posts_query
とは別の場所のコードなので直接の関係はなさそうです。
参考
- 【WordPress】管理画面の「投稿一覧」と「固定ページ一覧」の最大表示数を変更する方法。 – 株式会社オンズ
- edit_posts_per_page | Hook | WordPress Developer Resources
- edit_{$post_type}_per_page | Hook | WordPress Developer Resources
- upload_per_page | Hook | WordPress Developer Resources
- WordPress/post.php at af4b043a693fc7178ef8a1fcd0402f14fba0a040 · WordPress/WordPress · GitHub