另一个问题:如何更改CPT的Permalink结构,使帖子名位于URL的中间,而不是末尾,例如。/a/%postname%/b/c
在更改自定义帖子类型中的permalink结构时,有什么建议吗?现在我希望结构是/a/%postname%/b/c
但它最终会默认添加postname,如/a/%postname%/b/c/%postname%
.
这是我的register_post_type
密码
$args = array(
\'label\' => __(\'testCPT\', \'text_domain\'),
\'description\' => __(\'Site articles.\', \'text_domain\'),
\'labels\' => $labels,
\'supports\' => array(\'title\', \'revisions\'),
\'hierarchical\' => false,
\'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\' => true,
\'exclude_from_search\' => false,
\'publicly_queryable\' => true,
\'rewrite\' => array(
\'slug\' => \'/a/%postname%/b/c\',
\'with_front\' => false
),
);
生成的结构:
http://localhost/project/a/yoda/b/c/yoda/
所需结构:
http://localhost/project/a/yoda/b/c/
最合适的回答,由SO网友:Sally CJ 整理而成
请注意,您应该使用%<post type>%
在slug
值,因此如果post类型为test_cpt
, 然后你会使用%test_cpt%
如中所示/a/%test_cpt%/b/c
.
将帖子名/slug移到permalink结构的中间或开头实际上非常简单:
注册帖子类型:
// replace test_cpt with the correct post type
register_post_type( \'test_cpt\', $args );
然后,执行以下操作:
global $wp_rewrite;
// replace test_cpt with the correct post type
$wp_rewrite->extra_permastructs[\'test_cpt\'][\'struct\'] = \'/a/%test_cpt%/b/c\';
和
记住刷新重写规则,只需访问永久链接设置页面即可完成。