【发布时间】:2020-03-18 03:34:18
【问题描述】:
我正在为我的 CPT 产品实施自定义分页。这是我尝试过的 -- 在 taxonomy-product-category.php 中
<?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'products',
'post_status' => 'publish',
'posts_per_page' => 6,
'parent' => 0,
'paged' => $paged,
'orderby' => 'date',
'order' => 'DESC',
'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'field' => 'slug',
'terms' => array($term->slug),
'operator' => 'IN'
),
),
);
?>
在functions.php中
function get_pagination($range = 4) {
global $paged, $wp_query;
$no_of_posts = 6;
// How much pages do we have?
if (!$max_page) {
$max_page = round($wp_query->max_num_pages / $no_of_posts);
}
die($wp_query->max_num_pages);
}
但问题是
if (!$max_page) {
$max_page = round($wp_query->max_num_pages / $no_of_posts);
}
die($wp_query->max_num_pages);
为此,它总是返回 $wp_query->max_num_pages 总是返回 1。我不想将它除以帖子数。
【问题讨论】:
-
您是否还有其他过滤器可能会破坏这一点?例如
add_action('pre_get_posts', 'some_function');?另外,返回值是否总是相同的(single,archives)? -
是的,我用过这个
-
function custom_posts_per_page($query) { //修复自定义帖子类型的分页 if ($query->is_archive('products')) { set_query_var('posts_per_page', 1); } } add_action('pre_get_posts', 'custom_posts_per_page');
-
尝试删除或更改值或更改优先级,看看效果。
-
好的,谢谢,我删除了它,一切正常。
标签: php wordpress custom-post-type