删除外观中的分页 - >菜单 - >分类

时间:2018-04-08 09:10:28

标签: php wordpress

我已经在WP Stackexchange上问了这个问题,但没有得到任何答案。那么让我试试吧。 Wordpress Stackexchange

有没有办法在Wordpress菜单编辑器中删除分页?

我的博客中有200个类别,当你必须点击它来查找所需的类别时,自定义菜单似乎很棘手。

我知道有一个插件可以“删除”PAGES的分页,但我找不到任何可以删除分类的分页。 我试图在Wordpress Admin PHP文件中找到一些东西,甚至是nav-menus.php但是没有运气。

Link to Problem

1 个答案:

答案 0 :(得分:0)

在阅读完源代码后,我发现编辑菜单部分返回的类别数量在 \ 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;
}

如果您将数字设置为空白,即使它显示所有类别,它仍会显示分页。

还有一个名为terms_clauses的过滤器,您可以在其中从查询中删除SQL LIMIT子句,但这似乎对查询没有任何影响。

add_filter('terms_clauses', 'modify_terms_clauses', 10, 3);

function modify_terms_clauses( $clauses, $taxonomies, $args ) {
    if( reset($taxonomies) === 'category' ) {
        $clauses['limits'] = '';
    }

    return $clauses;
}