WordPress函数:WP_Rewrite::flush_rules 刷新重写规则

江河/ 01月25日/ WordPress/ 浏览 1397

函数原型:


WP_Rewrite::flush_rules( bool $hard = true )


删除重写规则,然后重新创建重写规则


在删除“Rewrite_rules”选项后调用WP_Rewrite::WP_Rewrite_rule()。


如果名为“save_mod_rewrite_rules”的函数存在,则会调用它。


此方法可用于刷新WordPress的重写规则缓存。通常,这应该在以编程方式添加一个或多个自定义重写规则之后使用。


因为这个功能在性能方面可能非常昂贵,所以应该尽可能少地使用它,比如在激活或停用插件或主题时。应该尽一切努力避免在每次页面加载时执行的挂钩中使用它,例如init。


参数说明:


$hard 是更新.htaccess(硬刷新)还是只更新rewrite_rules选项(软刷新)。默认为true。


函数源码:


public function flush_rules( $hard = true ) {
	static $do_hard_later = null;

	// Prevent this action from running before everyone has registered their rewrites.
	if ( ! did_action( 'wp_loaded' ) ) {
		add_action( 'wp_loaded', array( $this, 'flush_rules' ) );
		$do_hard_later = ( isset( $do_hard_later ) ) ? $do_hard_later || $hard : $hard;
		return;
	}

	if ( isset( $do_hard_later ) ) {
		$hard = $do_hard_later;
		unset( $do_hard_later );
	}

	$this->refresh_rewrite_rules();

	if ( ! $hard || ! apply_filters( 'flush_rewrite_rules_hard', true ) ) {
		return;
	}
	if ( function_exists( 'save_mod_rewrite_rules' ) ) {
		save_mod_rewrite_rules();
	}
	if ( function_exists( 'iis7_save_url_rewrite_rules' ) ) {
		iis7_save_url_rewrite_rules();
	}
}


包含钩子:


apply_filters( ‘flush_rewrite_rules_hard’, bool $hard )


发表评论

暂无评论,抢个沙发...

客服 工单