【问题标题】:$wp_query->max_num_pages not working for CPT$wp_query->max_num_pages 不适用于 CPT
【发布时间】: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


【解决方案1】:

实际上有几个问题会导致这种情况,但让我们从最常见的问题开始:

您可能有一些其他过滤器在早期干预查询,例如:

add_action('pre_get_posts', 'some_function');

或任何其他改变查询的函数。 尝试删除/更改优先级并查看结果但保持警惕,因为此pre_get_post 操作可能对其他事情是必要的/有用的,因此请确保您知道自己在做什么。..

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多