wordpressのメニューエディタでページネーションを削除する方法はありますか?
私のブログには200のカテゴリーのようなものがありますが、希望のカテゴリーを見つけるためにそれをクリックしなければならない場合、メニューのカスタマイズは難しいようです。
PAGESのページ区切りを「削除」するプラグインがあることは知っていますが、CATEGORIESのページ区切りを削除するものが見つかりませんでした。
Stackoverflow Stackoverflow に従って
ソースコードを読んだ後、編集メニューセクションに返されるカテゴリの数が\ wp-admin\includes\nav-menu.phpの613行目で50にハードコードされていることがわかりました。
// Paginate browsing for large numbers of objects.
$per_page = 50;
$pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1;
$offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0;
ページごとのデフォルトの50を上書きするには、すべてのカテゴリを返すようにクエリに指示するために番号を ''に設定できます。 functions.phpファイルに次のコードを追加してください。
add_filter( 'get_terms_args', 'show_all_categories_admin_nav_menu', 10, 2);
function show_all_categories_admin_nav_menu( $args, $taxonomies ) {
if( reset($taxonomies) === 'category' ) {
$args['number'] = '';
}
return $args;
}
番号を空白に設定すると、すべてのカテゴリが表示されていても、ページ番号が表示されます。
クエリからSQLのLIMIT句を削除できる既存のterms_clausesというフィルタもありますが、これはクエリに影響を与えるようには見えませんでした。
add_filter('terms_clauses', 'modify_terms_clauses', 10, 3);
function modify_terms_clauses( $clauses, $taxonomies, $args ) {
if( reset($taxonomies) === 'category' ) {
$clauses['limits'] = '';
}
return $clauses;
}