为什么“/page/2/”不起作用?

时间:2012-03-05 作者:Dave

最后,使用下面的代码进行分页,但现在分页链接到/videos/page/2/,而这并不存在。如何让第2页工作?

<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query(\'post_type=videos&showposts=1\'.\'&paged=\'.$paged);

while ($wp_query->have_posts()) : $wp_query->the_post();
  //display stuff
endwhile;           

php  wp_pagenavi();
 ?>

5 个回复
最合适的回答,由SO网友:Dave 整理而成

找到答案:

通过wordpress core进行了长时间的调试后,我设法解决了这个问题。

基本上,页面和自定义帖子类型不能同名。如果这样做,permalink重写规则将变得混乱,并触发404。

我使用的一个非常简单的解决方案是:列出自定义帖子类型的页面以复数形式调用(例如products),而实际的帖子类型名称以单数形式调用(例如product)。所以他们没有冲突,一切都很好。

完成!完成!希望这能节省人们的时间。

通过rafaelxy(http://wordpress.org/support/topic/pagination-with-custom-post-type-listing)

SO网友:Dneiz

很长一段时间后,我找到了这个问题的解决方案(感谢franzblog).

如果您使用的是4.2或更高版本,则需要在functions.php 文件:

add_filter( \'redirect_canonical\', \'custom_disable_redirect_canonical\' );
function custom_disable_redirect_canonical( $redirect_url ) {
    if ( is_paged() && is_singular() ) $redirect_url = false; 
    return $redirect_url; 
}
现在一切正常!

SO网友:ruorc

页面和自定义帖子类型不能具有相同的名称

也许三年前这是不可能的,但现在你可以了。

首先,将此行添加到$args 输入您的帖子类型:

\'has_archive\' => false,
\'rewrite\'     => array(
                 \'slug\'       => \'your slug\', // if you need slug
                 \'with_front\' => false,
                 ),
第二,在functions.php 添加操作:

add_action(\'init\', \'custom_rewrite_basic\');
function custom_rewrite_basic() {
    global $wp_post_types;
    foreach ($wp_post_types as $wp_post_type) {
        if ($wp_post_type->_builtin) continue;
        if (!$wp_post_type->has_archive && isset($wp_post_type->rewrite) && isset($wp_post_type->rewrite[\'with_front\']) && !$wp_post_type->rewrite[\'with_front\']) {
            $slug = (isset($wp_post_type->rewrite[\'slug\']) ? $wp_post_type->rewrite[\'slug\'] : $wp_post_type->name);
            $page = get_page_by_slug($slug);
            if ($page) add_rewrite_rule(\'^\' .$slug .\'/page/([0-9]+)/?\', \'index.php?page_id=\' .$page->ID .\'&paged=$matches[1]\', \'top\');
        }
    }
}

function get_page_by_slug($page_slug, $output = OBJECT, $post_type = \'page\' ) {
    global $wpdb;

    $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = \'publish\'", $page_slug, $post_type ) );

    return ($page ? get_post($page, $output) : NULL);
}
不要忘记刷新仪表板中的规则。

SO网友: santhosh

经过长时间的调试,我甚至得到了分页问题的解决方案

基本上,在WordPress中,页面和自定义帖子类型不能具有相同的名称。如果这样做,permalink重写规则将变得混乱,并触发404。

SO网友:Lucas Bustamante

一种可能性是,在管理仪表板上Settings -> Reading, 如果您选择了Posts page, 选项Blog pages show at most 将与您的习惯冲突posts_per_page 在该页中查询。

因此,请确保取消选择posts页面,或者确保每页的posts与Blog pages show at most 中的选项Settings -> Reading.

结束

相关推荐

How to use pagination?

我有一个页面的以下代码,在这里我拉一张照片,标题和最后10篇文章的摘录。问题是,我不知道如何添加分页?我也安装了WP PageNavi。我已经看到一些类似的问题得到了解决,但我根本无法真正理解这个概念,我首先尝试确保这是可能的?<?php /* Template Name: Opinion */ ?> <?php get_header(); ?> <div id=\"primary\"> <div id=\"