分页自定义POST类型不适用于重写插件

时间:2020-08-06 作者:Morgan Tartreau

我找不到在我的post类型上进行分页的方法(这不是在存档posttype.php上)。我已经重写了我的帖子类型,但如果我重写(“medias/implements”),第二页就不起作用了,但如果我有未重写的slug(“实现”),它就会起作用。

我重写是因为我的客户想要;媒体/实现”;在url中,但在第二页上,分页返回404。。。

这是我的帖子类型

$args = array(
    \'menu_icon\' => \'dashicons-admin-site-alt2\',
    \'label\' => __(\'Actualités\', \'domain\'),
    \'description\' => __(\'Actualités\', \'domain\'),
    \'labels\' => $labels,
    \'supports\' => array(\'title\', \'page-attributes\', \'editor\', \'thumbnail\', \'revisions\', \'post-formats\', \'excerpt\',),
    \'taxonomies\' => array(\'category\', \'post_tag\'),
    \'hierarchical\' => true,
    \'public\' => true,
    \'show_ui\' => true,
    \'show_in_menu\' => true,
    \'menu_position\' => 5,
    \'show_in_admin_bar\' => true,
    \'show_in_nav_menus\' => true,
    \'can_export\' => true,
    \'has_archive\' => false,
    \'exclude_from_search\' => false,
    \'publicly_queryable\' => true,
    \'capability_type\' => \'page\',
    \'rewrite\' => array(
        \'slug\' => \'medias/actualites\',
        \'with_front\' => false,
    ),

);
编辑:我正在使用插件将/媒体/实现翻译为/媒体/新闻

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

因此,根据评论,您确认您使用的是自定义页面(即page 类型)作为post类型的存档,这意味着您可以mediaactualites 页码(其中actualitesmedia 页)或您使用了CPT存档的父页。

通常,转到页面的第2、3页等不会导致404错误;然而,您的帖子类型的重写slug是medias/actualites, 因此medias/actualites/page/2 (或page/3, page/4, 等)将导致404错误,因为WordPress将URL视为单个CPT请求。

但幸运的是,您可以通过使用自定义重写规则摆脱404错误,该规则可以使用add_rewrite_rule():

// First, register the CPT.
register_post_type( \'actualite\', array( ... your args ... ) );

// Then add the rewrite rule.
// Note: With pagename, you must use the full page path, i.e. <parent slug>/<child slug>
add_rewrite_rule(
    \'^medias/actualites/page/(\\d+)/?$\',
    \'index.php?pagename=medias/actualites&paged=$matches[1]\',
    \'top\'
);
/* Or if using a parent Page:
add_rewrite_rule(
    \'^medias/actualites/page/(\\d+)/?$\',
    \'index.php?pagename=your-cpt-archive&paged=$matches[1]\',
    \'top\'
);
*/
PS:不要忘记刷新重写规则,只需使用get_query_var( \'paged\' ) 获取页码。

如果您已经有了自定义重写规则,可以将其添加到问题中,我将帮助您修复它。

相关推荐

Custom pagination structure

当前我的分页工作方式如下http://example.com/city/usa/ #for page 1 http://example.com/city/usa/page/2 http://example.com/city/usa/page/3 ...and so on 我想将其更改为:http://example.com/city/usa/ #for page 1 http:/