Wordpress自定义post类型分页
我正在尝试使用Wordpress自定义post类型分页,wordpress,pagination,custom-post-type,Wordpress,Pagination,Custom Post Type,我正在尝试使用wp pagenavi插件和WordPress中的自定义帖子类型(公文包页面)进行分页,但我没有运气 以下是我的公文包页面的精简版本: <?php get_header(); ?> <?php $type = 'portfolio'; $args=array( 'post_type' => $type, 'post_status' => 'publish', 'paged' => $paged, 'pos
wp pagenavi
插件和WordPress中的自定义帖子类型(公文包页面)进行分页,但我没有运气
以下是我的公文包页面的精简版本:
<?php get_header(); ?>
<?php
$type = 'portfolio';
$args=array(
'post_type' => $type,
'post_status' => 'publish',
'paged' => $paged,
'posts_per_page' => 1,
'caller_get_posts'=> 1
);
$temp = $wp_query; // assign original query to temp variable for later use
$wp_query = null;
$wp_query = new WP_Query($args);
?>
<?php if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); ?>
...
<?php endwhile; else : ?>
...
<?php endif; ?>
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
$wp_query = null; $wp_query = $temp; ?>
<?php get_footer(); ?>
我已经重新拯救了他们
当我看到我作品集的第二页时,我看到了404页。知道为什么会这样吗
谢谢您的帮助。我在Wordpress中遇到分页问题,无法解决,因此我推出了自己的WP_查询类扩展-> 只需使用MF_Query代替WP_Query,然后使用
$your_Query->next(“下一页”)
或$your_Query->prev(“上一页”)
添加下一页和上一页链接(文本具有默认值,因此不需要参数)
根据标准WP\u Query
的各种选项,您需要将参数作为数组直接传递给类初始化
这有点老套,但很管用!!自定义post类型数字分页->
这将与permalink设置为default或postname一起工作我认为旧WordPress URL重定向的情况很糟糕 尝试添加此筛选器以停止它:
add_filter('redirect_canonical','my_disable_redirect_canonical');
function my_disable_redirect_canonical( $redirect_url ) {
if ( is_single( 'portfolio' ) )
$redirect_url = false;
return $redirect_url;
}
这是我将paged变量传递到CPT查询中进行导航的方法,你可以使用不同的方法,但这是唯一一种我可以使用WP_查询的方法。并且不需要任何导航插件,只需要标准的导航链接 在查询之前,您应该将这一行放在这里
$paged = 1;
if ( get_query_var('paged') ) $paged = get_query_var('paged');
if ( get_query_var('page') ) $paged = get_query_var('page');
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('post_type=portafolio&showposts=7&orderby=post_date&order=DESC&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
//post format
get_template_part("content");?>
<?php endwhile; ?>
//pagination links here
<?php
$wp_query = null;
$wp_query = $temp; // Reset
?>
您也可以阅读这篇文章,它解释了链接模板的方法,这将解决我们在涉及自定义查询时必须处理的分页问题
如果其他人遇到同样的问题,可以在这里解决这个问题:为什么不将此作为一个答案并标记为已接受?请总结您链接到的帖子;简单地提供一个链接是没有帮助的。但是,准确的说,在许多情况下,行应该是:if(get_post_type($post)=‘公文包’&&is_archive())$redirect\u url=false;
$paged = 1;
if ( get_query_var('paged') ) $paged = get_query_var('paged');
if ( get_query_var('page') ) $paged = get_query_var('page');
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('post_type=portafolio&showposts=7&orderby=post_date&order=DESC&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
//post format
get_template_part("content");?>
<?php endwhile; ?>
//pagination links here
<?php
$wp_query = null;
$wp_query = $temp; // Reset
?>
function paginate() {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
$pagination = array(
'base' => @add_query_arg('page','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'show_all' => true,
'type' => 'plain'
);
if ( $wp_rewrite->using_permalinks() ) $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
if ( !empty($wp_query->query_vars['s']) ) $pagination['add_args'] = array( 's' => get_query_var( 's' ) );
echo paginate_links( $pagination );
}
function portafolio_posts_per_page( $query ) {
if ( $query->query_vars['post_type'] == 'portafolio' ) $query->query_vars['posts_per_page'] = 10;
return $query;
}
if ( !is_admin() ) add_filter( 'pre_get_posts', 'portafolio_posts_per_page' );
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array(
'post_type' => 'portfolio',
'paged' => $paged,
'caller_get_posts' => 1,
'posts_per_page' => T_Panel('portfolio_page_num')
));
if (have_posts()) :
while (have_posts()) : the_post();
// your content loop her
endwhile;
wp_reset_query();
endif;
?>