我有一个由 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覆盖上面的内容?
谢谢
已修复:
我使用这个钩子: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 );
谢谢