Php wp_查询->;max_num_pages在自定义帖子类型上始终返回0

Php wp_查询->;max_num_pages在自定义帖子类型上始终返回0,php,wordpress,Php,Wordpress,我的分页有问题,这似乎是因为$wp\u query->max\u num\u pages返回0 我认为这是因为默认的wordpress帖子0 因此,我使用的是创建自定义post类型wpdmpro <?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array( 'orderby' => 'date', 'ord

我的分页有问题,这似乎是因为
$wp\u query->max\u num\u pages
返回
0

我认为这是因为默认的wordpress帖子
0

因此,我使用的是创建自定义post类型
wpdmpro

<?php
    $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
    $args = array(
        'orderby'           => 'date',
        'order'             => 'DESC',
        'post_status'       => 'publish',
        'posts_per_page'    => 2,
        'paged'             => $paged,
        'post_type' => 'wpdmpro', 
        'wpdmcategory' => $category->category_nicename,
        'tag' => $cat_tag
    );
    query_posts($args)
?>
<?php if (have_posts()) : ?>
   /* content goes here */
<?php endif; ?>
<?php else : ?>

    <div class="row">
        <h2 class="center">Not Found</h2>
        <p class="center">Sorry, but you are looking for something that isn't here.</p>
        <?php get_search_form(); ?>
    </div>

<?php endif; ?>
我有每个类别的页面,使用循环,我用
wpdmpro
post-type
循环每个帖子

<?php
    $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
    $args = array(
        'orderby'           => 'date',
        'order'             => 'DESC',
        'post_status'       => 'publish',
        'posts_per_page'    => 2,
        'paged'             => $paged,
        'post_type' => 'wpdmpro', 
        'wpdmcategory' => $category->category_nicename,
        'tag' => $cat_tag
    );
    query_posts($args)
?>
<?php if (have_posts()) : ?>
   /* content goes here */
<?php endif; ?>
<?php else : ?>

    <div class="row">
        <h2 class="center">Not Found</h2>
        <p class="center">Sorry, but you are looking for something that isn't here.</p>
        <?php get_search_form(); ?>
    </div>

<?php endif; ?>
尽管如此,我实际上在
wpdmpro
post\u类型中有
11篇
帖子。那么为什么echos不做以下工作呢

echo $wp_query->max_num_pages /* Should return 2 because I have 11 posts with 10 per page */
echo $wp_query->found_posts   /* Shoudl return 11 because I have 11 posts */
尝试以下操作以查看此操作是否有效

  add_action( 'pre_get_posts', 'action_pre_get_posts' );
  function action_pre_get_posts( $q ) 
  {
    $q->set('max_num_pages', 20);
  }
但是当导航到
页面/2/
时,我仍然会看到404页面

我点击的url是
/category name/page/2
,它返回一个
404

一定有解决办法吗

如何使我的站点忽略默认的WordPress帖子类型,并使用我实际定义的
wpdmpro
帖子类型

编辑: 我也尝试过使用
WP\u查询
类,但在导航到
/page/2

如果它们之间存在某种联系,只需添加一些内容

在我的永久链接设置中,我有一个自定义结构

/%category%/%postname%/
我的默认分类基础是

在“我的WP下载管理器”设置中,我的
WPDM类别URL库是

我也有这两个过滤函数,它们是从这里的答案复制过来的,我对Wordpress很陌生,所以我不确定使用它们的潜在影响是什么

add_filter('category_rewrite_rules', 'vipx_filter_category_rewrite_rules');
add_filter('user_trailingslashit', 'remove_category', 100, 2);

我还确保没有任何帖子与类别名称冲突。

如果可以的话,你应该尽量避免使用
query\u posts()。大概是这样的:

<?php
// Args
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
    'orderby'           => 'date',
    'order'             => 'DESC',
    'post_status'       => 'publish',
    'posts_per_page'    => 2,
    'paged'             => $paged,
    'post_type'         => 'wpdmpro', 
    'wpdmcategory'      => $category->category_nicename,
    'tag'               => $cat_tag
);

// Query
$wpdmpro_query = new WP_Query( $args );

// The Loop
if( $wpdmpro_query->have_posts() ) : while( $wpdmpro_query->have_posts() ) : $wpdmpro_query->the_post();
?>
    <!-- Do stuff -->

<?php endwhile; ?>

    <!-- Do stuff if there are no posts -->

endif; wp_reset_postdata(); ?>

希望这有帮助

如果可以的话,你应该尽量避免使用
query\u posts()
,而应该选择。大概是这样的:

<?php
// Args
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
    'orderby'           => 'date',
    'order'             => 'DESC',
    'post_status'       => 'publish',
    'posts_per_page'    => 2,
    'paged'             => $paged,
    'post_type'         => 'wpdmpro', 
    'wpdmcategory'      => $category->category_nicename,
    'tag'               => $cat_tag
);

// Query
$wpdmpro_query = new WP_Query( $args );

// The Loop
if( $wpdmpro_query->have_posts() ) : while( $wpdmpro_query->have_posts() ) : $wpdmpro_query->the_post();
?>
    <!-- Do stuff -->

<?php endwhile; ?>

    <!-- Do stuff if there are no posts -->

endif; wp_reset_postdata(); ?>

希望这有帮助

万一有人碰到这个问题,我就找到了解决办法

第一步是创建一个
archive.php
页面

在那里,我将访问循环

functions.php

当我点击
/category name/page/2

之前,它使用了下面的示例url,
index.php?category_name=category name&paged=2
,因此它实际上使用默认的post类型进行类别分页

add_filter( 'category_rewrite_rules', 'vipx_filter_category_rewrite_rules' );`

function vipx_filter_category_rewrite_rules($rules) {
    $categories = get_terms('wpdmcategory', array("hide_empty" => false));

    if (is_array($categories) && !empty($categories)) {
        $slugs = array();
        foreach($categories as $category) {
            if (is_object($category) && !is_wp_error($category)) {
                if (0 == $category - > category_parent) {
                    $slugs[] = $category - > slug;
                } else {
                    $slugs[] = trim(get_category_parents($category - > term_id, false, '/', true), '/');
                }
            }
        }

        if (!empty($slugs)) {
            $rules = array();

            foreach($slugs as $slug) {
                $rules['('.$slug.
                    ')/feed/(feed|rdf|rss|rss2|atom)?/?$'] = 'index.php?wpdmcategory=$matches[1]&feed=$matches[2]';
                $rules['('.$slug.
                    ')/(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?wpdmcategory=$matches[1]&feed=$matches[2]';
                $rules['('.$slug.
                    ')(/page/(\d+)/?)?$'] = 'index.php?wpdmcategory=$matches[1]&paged=$matches[3]';
            }
        }
    }
    return $rules;
}

万一有人碰到这个问题,我就找到了解决办法

第一步是创建一个
archive.php
页面

在那里,我将访问循环

functions.php

当我点击
/category name/page/2

之前,它使用了下面的示例url,
index.php?category_name=category name&paged=2
,因此它实际上使用默认的post类型进行类别分页

add_filter( 'category_rewrite_rules', 'vipx_filter_category_rewrite_rules' );`

function vipx_filter_category_rewrite_rules($rules) {
    $categories = get_terms('wpdmcategory', array("hide_empty" => false));

    if (is_array($categories) && !empty($categories)) {
        $slugs = array();
        foreach($categories as $category) {
            if (is_object($category) && !is_wp_error($category)) {
                if (0 == $category - > category_parent) {
                    $slugs[] = $category - > slug;
                } else {
                    $slugs[] = trim(get_category_parents($category - > term_id, false, '/', true), '/');
                }
            }
        }

        if (!empty($slugs)) {
            $rules = array();

            foreach($slugs as $slug) {
                $rules['('.$slug.
                    ')/feed/(feed|rdf|rss|rss2|atom)?/?$'] = 'index.php?wpdmcategory=$matches[1]&feed=$matches[2]';
                $rules['('.$slug.
                    ')/(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?wpdmcategory=$matches[1]&feed=$matches[2]';
                $rules['('.$slug.
                    ')(/page/(\d+)/?)?$'] = 'index.php?wpdmcategory=$matches[1]&paged=$matches[3]';
            }
        }
    }
    return $rules;
}

还有。。。确保在WP\u查询参数中未将
no\u found\u rows
设置为
true

此外。。。请确保在WP_查询参数中没有将
no_found_rows
设置为
true

对不起,我应该提到,我尝试了
WP_查询
类,但点击
/page/2/
仍然会给我一个404,不管我使用什么,用我的永久链接更新我的答案等。嗯,切换回类肯定是第一步,但你可以尝试删除这两个过滤器,并重新保存永久链接设置以刷新重写规则,看看它是否有效。如果没有,请检查以确保分页链接中包含查询变量(
$wpdmpro_Query
)。我移除了过滤器并刷新了重写规则,但不幸的是,没有运气。此外,不确定是否要检查分页链接中的变量。我一直在用
啊。如果您已经切换回课堂,请尝试
对不起,我应该提到,我确实尝试了
WP\u Query
课堂,但是点击
/page/2/
仍然会给我一个404,无论我使用什么,都会用我的永久链接等更新我的答案。嗯-切换回课堂肯定是第一步,但您可以尝试删除这两个过滤器,然后重新保存永久链接设置,以刷新重写规则,并查看其是否有效。如果没有,请检查以确保分页链接中包含查询变量(
$wpdmpro_Query
)。我移除了过滤器并刷新了重写规则,但不幸的是,没有运气。此外,不确定是否要检查分页链接中的变量。我一直在用
啊。如果您已切换回该类,请尝试