我使用设置API允许用户切换has_archive
某些自定义帖子类型上的选项。当用户打开或关闭存档时,我想刷新重写规则。如果我自己编写了保存函数,我就可以调用flush_rewrite_rules()
虽然已经完成了,但设置API为我保存了数据。有什么地方可以用钩子吗?
add_action(\'admin_init\', \'my_plugin_register_settings\');
function my_plugin_register_settings() {
if (delete_transient(\'my_plugin_flush_rules\')) flush_rewrite_rules();
register_setting(\'my_plugin\', \'my_plugin_settings\', \'my_plugin_sanitize\');
// add_settings_section(), add_settings_field(),...
}
function my_plugin_sanitize($input) {
set_transient(\'my_plugin_flush_rules\', true);
return $input;
}
最合适的回答,由SO网友:Stephen Harris 整理而成
保存设置后,只需访问“设置”>“永久链接”页面(无需在此处执行任何操作)。
如果我自己编写了保存函数,我可以调用flush\\u rewrite\\u rules()
不完全是。flush_rewrite_rules()
必须在自定义帖子类型“更新”后调用,以反映更改,即在您注册它之后。因此,您需要在注册CPT后的下一次页面加载时调用它。
您可以在下一个(and only the next) init
(注册CPT后)。要明确的是,flush_rewrite_rules()
这就是为什么我建议您只需告诉您的插件用户在更改任何永久链接选项后访问“设置”>“永久链接”页面,这样规则只有在真正需要时才会刷新。