我们在插件停止工作中偶尔重写规则有问题。访问网址时,我们得到404.频率很少,1-2个月或更长时间。也许在web主机服务器重启之后。
我的印象是:
大多数人似乎都说add_rewrite_rule()
挂了add_action( 'init', '...' )
。
你绝对不应该在init中使用flush_rules()但是在插件激活中(根据https://codex.wordpress.org/Rewrite_API/flush_rules)
因此 - 混乱。
当前代码:
register_activation_hook(__FILE__, 'xxx_activation');
function xxx_activation() {
xxx_addrewriterules();
//other stuff
}
function xxx_addrewriterules() {
//add rewrite rules
add_rewrite_rule(
xxx_DOCUMENT_VIRTUALDIRECTORY . '/([a-zA-Z0-9_\.;=]+)/?$',
'index.php?document=$matches[1]',
'top' );
//flush rules
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
我有预感试用/错误将重写移动到' init'并激活'激活' - 但很难确认,因为我们需要至少3个月才能怀疑变更工作,所以更喜欢实际确认或最佳实践示例。
谢谢!