save_mod_rewrite_rules()WP 1.5.0

Updates the htaccess file with the current rules if it is writable.

Always writes to the file if it exists and is writable to ensure that we blank out old rules.

No Hooks.

Return

true|false|null. True on write success, false on failure. Null in multisite.

Usage

save_mod_rewrite_rules();

Examples

0

#1 Disable the .htaccess update

By default when flush_rewrite_rules() is called, save_mod_rewrite_rules() is triggered. If we don't need this behavior, we can disable it with flush_rewrite_rules_hard hook:

add_filter( 'flush_rewrite_rules_hard', '__return_false' );

Notes

  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

Changelog

Since 1.5.0 Introduced.

save_mod_rewrite_rules() code WP 6.5.2

function save_mod_rewrite_rules() {
	global $wp_rewrite;

	if ( is_multisite() ) {
		return;
	}

	// Ensure get_home_path() is declared.
	require_once ABSPATH . 'wp-admin/includes/file.php';

	$home_path     = get_home_path();
	$htaccess_file = $home_path . '.htaccess';

	/*
	 * If the file doesn't already exist check for write access to the directory
	 * and whether we have some rules. Else check for write access to the file.
	 */
	if ( ! file_exists( $htaccess_file ) && is_writable( $home_path ) && $wp_rewrite->using_mod_rewrite_permalinks()
		|| is_writable( $htaccess_file )
	) {
		if ( got_mod_rewrite() ) {
			$rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() );

			return insert_with_markers( $htaccess_file, 'WordPress', $rules );
		}
	}

	return false;
}