我找不到在我的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,
),
);
编辑:我正在使用插件将/媒体/实现翻译为/媒体/新闻
最合适的回答,由SO网友:Sally CJ 整理而成
因此,根据评论,您确认您使用的是自定义页面(即page
类型)作为post类型的存档,这意味着您可以media
和actualites
页码(其中actualites
是media
页)或您使用了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\' )
获取页码。
如果您已经有了自定义重写规则,可以将其添加到问题中,我将帮助您修复它。