web-dev-qa-db-ja.com

外観のページネーションを削除 - >メニュー - >カテゴリ

wordpressのメニューエディタでページネーションを削除する方法はありますか?

私のブログには200のカテゴリーのようなものがありますが、希望のカテゴリーを見つけるためにそれをクリックしなければならない場合、メニューのカスタマイズは難しいようです。

PAGESのページ区切りを「削除」するプラグインがあることは知っていますが、CATEGORIESのページ区切りを削除するものが見つかりませんでした。

enter image description here 

3
mad2kx

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;
}
2
mad2kx