我有一个网站,有十几种自定义帖子类型。我想更改默认的帖子类型,使其URL有一段/news/。
在我的函数文件中,我有:
add_action( \'init\', \'change_post_object\' );
// Change dashboard Posts to News
function change_post_object() {
$get_post_type = get_post_type_object(\'post\');
$labels = $get_post_type->labels;
$labels->name = \'News\';
$labels->singular_name = \'News\';
$labels->add_new = \'Add News Item\';
$labels->add_new_item = \'Add News Item\';
$labels->edit_item = \'Edit News\';
$labels->new_item = \'News\';
$labels->view_item = \'View News Item\';
$labels->search_items = \'Search News\';
$labels->not_found = \'No News found\';
$labels->not_found_in_trash = \'No News found in Trash\';
$labels->all_items = \'All News\';
$labels->menu_name = \'News\';
$labels->name_admin_bar = \'News\';
$rewrite = $get_post_type->rewrite;
$rewrite->slug = \'news-events/news\';
$rewrite->with_front = \'true\';
}
。。。除了重写slug之外,所有这些都能正常工作。
许多帖子建议将Permalinks页面上的permalink结构从/%postname%/更改为/news/%postname%/。这可以工作,但会破坏所有其他自定义帖子类型。
我该怎么做?!
最合适的回答,由SO网友:WebElaine 整理而成
如前所述更改Permalinks结构,但同时为所有其他CPT添加(或更改)以下行:
$rewrite->with_front = \'false\';
设置
with_front
如果设置为false,将删除永久链接设置中列出的任何前缀。
如果设置并点击Permalinks页面刷新重写规则并不能立即解决问题,那么您可能需要调用unregister_post_type()
对于每个现有的CPT,在重新注册之前,因为它们在某些情况下可能很难缓存。