更改每页帖子数量时,当前的 CPT 分页不起作用

问题描述 投票:0回答:1

我有一个由 WordPress 主题构建的自定义帖子类型。所有用户都可以在用户后台查看自己的 CPT 帖子列表。

我成功更改了所有用户角色(非管理员角色)的每页帖子数,但现有分页的页数显示不正确。

这是我的代码

    // Change the number of custom post type posts per page - WORKING, but the calculation of number of pages is not correct
    function change_cpt_posts_per_page( $query ) {
        $main_user = wp_get_current_user();
        if( $main_user->roles[0] !== 'administrator' && $query->is_main_query() && is_post_type_archive('my_cpt') ) {
            $query->set( 'posts_per_page', '100' ); // Set number of posts per page
        }

    }
    add_action( 'pre_get_posts', 'change_cpt_posts_per_page' );

这些代码可以很好地更改每页的帖子数,但分页的页数与默认值相同,即页面底部的分页显示 145 页。请检查下面所附的屏幕截图:

    https://imgur.com/a/xd7W4b1

当上面设置的每页帖子数发生变化时,如何自动重新计算现有Pagination的页数?

非常感谢任何支持。

我尝试了以下方法来自动更新分页的总页数:

    $the_query = new WP_Query( $args );
    $args = array('total' => $the_query->max_num_pages);

    // OR:
    global $wp_query;
    // $total = $wp_query->max_num_pages;
    the_posts_pagination( array('total' => $wp_query->max_num_pages));

它们不起作用。非常感谢任何帮助。

更新:我发现我的 WP 主题使用默认的 WP 分页,代码如下:

    $total_pages     = $this->_pagination_args['total_pages'];

在此文件中:

    wp-admin/includes/class-wp-list-table.php

有没有办法在functions.php中使用PHP覆盖上面的内容?

谢谢

php wordpress post pagination
1个回答
0
投票

已修复:

我使用这个钩子:edit_{$post_type}_per_page来更新每页的帖子数和分页的页数:

    https://developer.wordpress.org/reference/hooks/option/

这里是完整的工作代码:

    function change_cpt_posts_per_page ( $per_page ) {
        $per_page = 100;
        
        return $per_page;
    }
    add_filter( 'edit_{$post_type}_per_page', 'change_cpt_posts_per_page', 10, 1 );

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.