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
)。我移除了过滤器并刷新了重写规则,但不幸的是,没有运气。此外,不确定是否要检查分页链接中的变量。我一直在用啊。如果您已切换回该类,请尝试