我注册了一个新的帖子类型
register_post_type(\'movie\', array(
\'labels\' => array(
\'name\' => __(\'Movies\'),
\'singular_name\' => __(\'Movie\'),
\'all_items\' => __(\'View Movies\'),
\'add_new\' => __(\'New Movie\'),
\'add_new_item\' => __(\'New Movie\'),
\'edit_item\' => __(\'Edit Movie\'),
\'view_item\' => __(\'View Movie\'),
\'search_items\' => __(\'Search Movie\'),
\'no_found\' => __(\'No Movie Found\'),
\'not_found_in_trash\' => __(\'No Movie in Trash\')
),
\'public\' => true,
\'publicly_queryable\' => true,
\'show_ui\' => true,
\'query_var\' => true,
\'show_in_nav_menus\' => false,
\'capability_type\' => \'page\',
\'hierarchical\' => true,
\'rewrite\' => [\'slug\' => \'movie\'],
\'supports\' => array(\'title\', \'editor\', \'thumbnail\'),
\'has_archive\' => true
));
和我的URL永久链接集
Post name
. 我的电影在字体页上显示为
[mydomain]/movie/%postname%
. 现在我只想在我的电影帖子类型中做一些小节。
[mydomain]/movie/%postname%/artists/
[mydomain]/movie/%postname%/songs/
[mydomain]/movie/%postname%/news/
[mydomain]/movie/%postname%/videos/
它还应支持.../page/2/
E、 g级[mydomain]/movie/%postname%/news/page/2/
我试着去做add_action(\'init\', \'my_custom_post_endpoint\');
function my_custom_post_endpoint()
{
add_rewrite_endpoint(\'news\', EP_PAGES);
add_rewrite_endpoint(\'videos\', EP_PAGES);
add_rewrite_endpoint(\'news\', EP_PERMALINK);
add_rewrite_endpoint(\'videos\', EP_PERMALINK);
}
但是有了这个,它就工作了,但是[mydomain]/movie/%postname%/news/page/2/
不工作。我是说.../page/2
不工作。问题:
如何为movie
仅post类型如何添加支持.../page/2
在端点之后列表项
SO网友:Sally CJ
我注意到你的帖子类型是hierarchical, 所以你可以加上page-attributes
到supports
post type args中的数组,即。\'supports\' => array(\'title\', \'editor\', \'thumbnail\', \'page-attributes\')
, 然后您可以创建这些子节作为movie
职位。但是是的,子帖子需要使用独特的slug,比如news
, news2
, news-3
, 等
因此,如果不是首选,那么可以继续使用endpoint方法。
但是add_rewrite_endpoint()
不添加分页的重写规则(/page/<number>
一个和EP_PAGES
因此您可能希望使用add_rewrite_rule()
并更好地控制重写规则。
下面是一个示例,您可以测试RegEx(正则表达式)模式here:
function my_custom_post_endpoint()
{
add_rewrite_rule(
\'^movie/(.+?)/(news|videos)(?:/page/(\\d+)|)/?$\',
\'index.php?movie=$matches[1]&paged=$matches[2]\',
\'top\'
);
}
应用上述代码后,不要忘记刷新重写规则。只需访问permalink设置管理页面,无需单击保存更改按钮。