我正在编写一个实例化自定义帖子类型的插件(除其他外)。它是一个多站点插件,位于目录mu-plugins中。
在这种情况下处理flush_rewrite_rules()的最佳实践是什么?对于“普通”插件,您可以在激活钩子中进行此操作-对于必需使用的插件将无法实现,因为这些钩子不可用。
由于这应该是在注册自定义帖子类型之后的“一次性”事件,因此在我注册CPT的类中做这样的事情是否有意义:
private function check_flush_my_CPT() {
global $wp_rewrite;
if ( !get_option('my_plugin_firstrun') ) {
$wp_rewrite->init();
$wp_rewrite->flush_rules(true);
update_option('my_plugin_firstrun', 'yes');
}
}
public function register_my_CPT() {
// do all the CPT setup steps for the $args array...
register_post_type('my_CPT', $args);
$this->check_flush_my_CPT();
}
add_action( 'init', array(&$this, 'register_my_CPT' ) );
因此,CPT注册发生在每个“ init”操作上-但如果我有此权利,则重写规则刷新仅发生一次。 曾经。
我在正确的轨道上吗?
(编辑):我刚刚尝试过;我的CPT显示404错误,因此重写规则不起作用:-(
(编辑#2):我确实尝试了访问全局变量的解决方案,如以下问题所示: 如何可靠地刷新多站点上的重写规则?-我将更新上面的代码示例以显示这一点。不幸的是,尝试加载CPT时仍然出现404错误。我看到重写规则正在存储在数据库中,似乎它们没有被使用。我迷路了。