Wordpress不止一次插入rewrite_rules选项

时间:2016-03-30 12:34:51

标签: php sql wordpress

我正在尝试优化慢速wordpress网站。我使用一个名为Query Monitor的插件来查找异常。

我可以看到每页重新插入rewrite_rules选项(超过50000个字符)。

这是stacktrace:

add_option()

-
update_option()
 wp-includes/option.php:301
WP_Rewrite->wp_rewrite_rules()
 wp-includes/class-wp-rewrite.php:1452
WP_Rewrite->flush_rules()
 wp-includes/class-wp-rewrite.php:1774
do_action('wp_loaded')
 wp-includes/plugin.php:525

这些文件看起来像核心wordpress文件。

我不确定这是否是正常行为?我想不是因为我认为没有充分的理由。

你以前见过这个吗?

1 个答案:

答案 0 :(得分:1)

WordPress保留所有自定义重写规则的缓存。有时插件或主题会对这些规则进行修改,但是在重新生成缓存之前,WordPress实际上不会识别这些更改。

这不是一个过程函数,而是一个WP_Rewrite类的非静态方法。要调用flush_rules(),首先必须确保使用WordPress'$ wp_rewrite global,并将其作为方法调用(参见上面的“用法”)。

注意:只要在WordPress管理员中更改或保存永久链接设置,就会调用相同的方法,因此可以通过访问设置>手动刷新重写规则。 WordPress管理员中的永久链接屏幕。

警告:如果在没有参数或参数为true的情况下调用此函数,则.htaccess将被覆盖,任何自定义规则都将丢失!

import {Component} from 'angular2/angular2';
import {MyCustomComponentMetadata} from ...;

export function MyCustomComponent(config: MyCustomComponentMetadata) {
  return function(cls) {
    var annotations = Reflect.getMetadata('annotations', cls) || [];
    annotations.push(new Component(config));
    Reflect.defineMetadata('annotations', annotations, cls);
    return cls;
  };
};