我已设置了自定义帖子类型(CPT),删除了对编辑器的支持:
register_post_type( \'review\', array(
\'label\' => \'Reviews\',
\'labels\' => array(
\'name\' => \'Reviews\',
/* etc */
),
\'description\' => \'Tour reviews\',
\'menu_icon\' => \'dashicons-format-chat\',
\'public\' => true,
\'supports\' => array(
\'title\',
\'revisions\',
\'author\',
),
\'has_archive\' => false,
\'show_in_rest\' => true,
\'rewrite\' => array(\'slug\' => \'reviews\'),
));
(是的,我只使用标题作为内容;))
这很好用!然而
当我添加这种类型的新帖子时,自动生成的permalink会使用另一个帖子类型的标题,而不是使用添加的帖子类型的标题。
因此,它产生:
/reviews/title-of-the-last-post-of-another-post-type/
而不是:
/reviews/newly-added-post-of-this-post-type/
奇怪的是;“审查”;part是正确的,但page_name
部分不是。
这是一个bug还是我遗漏了什么
注意:如果我添加对
editor
在
register_post_type
呼叫,此问题不会发生。但我不想为这种帖子类型启用编辑器。
NB2:首次发布后,如果我手动清空permalink的编辑字段并单击;更新“;,正确的slug/page_name
已生成。
SO网友:Vitor Almeida
注册或更新任何帖子/自定义帖子类型的任何重写时,您需要通过管理面板或通过代码刷新重写规则:
register_activation_hook( __FILE__, \'plugin_activation\' );
function plugin_activation() {
update_option(\'plugin_permalinks_flushed\', 0);
}
add_action( \'init\', \'register_custom_post_type\' );
function register_custom_post_type() {
global $wp;
register_post_type( \'review\', array(
\'label\' => \'Reviews\',
\'labels\' => array(
\'name\' => \'Reviews\',
/* etc */
),
\'description\' => \'Tour reviews\',
\'menu_icon\' => \'dashicons-format-chat\',
\'public\' => true,
\'supports\' => array(
\'title\',
\'revisions\',
\'author\',
),
\'has_archive\' => false,
\'show_in_rest\' => true,
\'rewrite\' => array(\'slug\' => \'reviews\'),
));
if( !get_option(\'plugin_permalinks_flushed\') ) {
flush_rewrite_rules(false);
update_option(\'plugin_permalinks_flushed\', 1);
}
}
https://developer.wordpress.org/reference/functions/flush_rewrite_rules/