WordPress 404分页(/page/2)错误?

时间:2015-01-14 作者:johnmicky

我已经为视频创建了自定义帖子类型。这是我的密码。

function video_register() {
    $labels = array(
        \'name\' => _x(\'Video\', \'post type general name\'),
        \'singular_name\' => _x(\'Video\', \'post type singular name\'),
        \'add_new\' => _x(\'Add New\', \'video\'),
        \'add_new_item\' => __(\'Add New Video\'),
        \'edit_item\' => __(\'Edit Video\'),
        \'new_item\' => __(\'New Video\'),
        \'view_item\' => __(\'View Video\'),
        \'search_items\' => __(\'Search Videos\'),
        \'not_found\' => __(\'Nothing found\'),
        \'not_found_in_trash\' => __(\'Nothing found in Trash\'),
        \'parent_item_colon\' => \'\'
    );

    $args = array(
        \'labels\' => $labels,
        \'public\' => true,
        \'publicly_queryable\' => true,
        \'show_ui\' => true,
        \'query_var\' => true,
        \'menu_icon\' => null,
        \'rewrite\' => true,
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'menu_position\' => null,
        \'supports\' => array(\'title\', \'editor\', \'thumbnail\', \'comments\', \'custom-fields\')
    );

    register_post_type(\'video\', $args);
}
我用这个代码在主页上显示了这个视频帖子。

$paged = (get_query_var(\'page\')) ? get_query_var(\'page\') : 1;
    $temp = $wp_query;
    $wp_query= null;
    $vcount = 20;
    $wp_query = new WP_Query();

        $wp_query->query(\'posts_per_page=\'.$vcount.\'&post_type=video&paged=\'.$paged);
一切正常。但当我点击/page/2时,它的分页给了我404个错误。

此分页仅显示在主页上。在分类页面上,它运行良好。我不明白我弄错了什么。我在互联网上到处搜索,但找不到任何解决方案。请告诉我我的代码有什么问题。

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

无法在模板中可靠地实现分页。它是在加载过程中在到达模板之前解决的。

除非您从头开始实现它(完成重写),否则您需要使用pre_get_posts 或其他相关钩子来修改主查询。看看这个网站,这里有很多关于这个主题的答案。

SO网友:shanebp

由于您使用此选项:get_query_var(\'page\') 尝试将变量名称的“paged”更改为“page”。

$wp_query->query(\'posts_per_page=\'.$vcount.\'&post_type=video&page=\'.$paged);

结束

相关推荐

Pagination and Related Posts

是否可以对嵌入在single中的以下相关POST代码使用分页。我的主题的php。 <?php // for use in the loop, list 5 post titles related to first tag on current post $tags = wp_get_post_tags($post->ID); if ($tags) { $first_tag = $