自定义帖子类型的分页导致404错误

时间:2015-07-22 作者:Benmay

这似乎是一个常见的问题,关于这个问题有很多帖子,但没有一个适合我。

我有一个带有页面分页的自定义帖子类型(公文包)。

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
echo \'<a href="\'.get_pagenum_link($paged+1).\'">Next Page</a>\';
将永久链接设置设置设置为“默认”时,效果良好。

mysite.com/?page_id=111&paged=2

当将永久链接设置为任何自定义结构时,它将导致404页。

mysite.com/portfolio/page/2/

这快把我逼疯了。找不到任何解决方案。我没有一个页面或帖子有slugname“page”,所以这不会是问题。我多次刷新了permlinks,但都不起作用。

注意:对于这两种permalinks设置,默认博客页面都可以正常工作

我真的很想知道这件事。谢谢

3 个回复
SO网友:Nasir Uddin

将此函数粘贴到functions.php 文件

if ( ! function_exists( \'custom_pagination\' ) ) {
    function custom_pagination( $query_args ) {
        $big = 999999999; // need an unlikely integer
        $pages = paginate_links( array(
                \'base\'      => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
                \'format\'    => \'?paged=%#%\',
                \'current\'   => max( 1, get_query_var( \'paged\' ) ),
                \'total\'     => $query_args->max_num_pages,
                \'prev_next\' => false,
                \'type\'      => \'array\',
                \'prev_next\' => true,
                \'prev_text\' => __(\'«\'),
                \'next_text\' => __(\'»\'),
            ) );
        if ( is_array( $pages ) ) {
            $paged = ( get_query_var(\'paged\') == 0 ) ? 1 : get_query_var(\'paged\');
            echo \'<ul class="pagination">\';
            foreach ( $pages as $page ) {
                    echo "<li>$page</li>";
            }
            echo \'</ul>\';
        }
    }
}
然后在自定义post循环页面上,将循环写为

$args = [
    \'post_type\'      => \'post\',
    \'posts_per_page\' => get_option(\'posts_per_page\'),
];

$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // You content goes here
    }
    custom_pagination( $query );
    wp_reset_postdata();
}
这对我来说很好。

SO网友:Jose Andres Cordova

我也遇到过同样的情况,当时我正发疯,并测试了这个情况下的可测试规范重定向,并且成功了。也许这也会有帮助

然而,我不确定这是否是最好的方法。

function no_canonical( $url ) {
        return false;
}
function adjust_show_request( $request ) {
        if ($request->query_vars[\'post_type\'] === \'agent\' && $request->is_singular === true && $request->current_post == -1 && $request->is_paged === true ) {
                add_filter( \'redirect_canonical\', \'no_canonical\' );
        }
        return $request;
}
add_action( \'parse_query\', \'adjust_show_request\' );

SO网友:Jignesh Patel

尝试使用此选项进行页面分页。下一页上一页的顺序取决于菜单顺序。选中get\\u pages参数。将代码放入主题页模板中。

<?php
$pagelist = get_pages(\'sort_column=menu_order&sort_order=asc\');
$pages = array();
foreach ($pagelist as $page) {
   $pages[] += $page->ID;
}

$current = array_search(get_the_ID(), $pages);
$prevID = $pages[$current-1];
$nextID = $pages[$current+1];
?>

<div class="navigation">
<?php if (!empty($prevID)) { ?>
<div class="alignleft">
<a href="<?php echo get_permalink($prevID); ?>"
  title="<?php echo get_the_title($prevID); ?>">Previous</a>
</div>
<?php }
if (!empty($nextID)) { ?>
<div class="alignright">
<a href="<?php echo get_permalink($nextID); ?>" 
 title="<?php echo get_the_title($nextID); ?>">Next</a>
</div>
<?php } ?>
</div>

结束

相关推荐

Frontpage pagination by week

我正试图建立一个包含本周所有帖子的frontpage。这很简单(查询片段):$query_string = array( \'post_type\' => \'post\', \'date_query\' => array( array( \'year\' => date( \'Y\' ), \'week\' => date( \'W\' ),