SAVE_MOD_REWRITE_RULES() │ WP 1.5.0
Функция save_mod_rewrite_rules() обновляет файл .htaccess с текущими правилами, если файл доступен для записи.
Она всегда записывает новые данные в файл, если он уже существует, чтобы удалить старые правила.
Как это работает?
Эта функция использует метод WP_Rewrite::mod_rewrite_rules(), чтобы получить текущие правила перезаписи.
У этой функции нет хуков.
Возвращаемое значение
- true - если запись успешна,
- false - если не удалось записать,
- null - в случае мультиместного сайта (multisite).
Использование
Чтобы использовать эту функцию, просто вызовите её:
save_mod_rewrite_rules();
Примеры
Отключение обновления .htaccess
По умолчанию, когда вызывается функция flush_rewrite_rules(), срабатывает и save_mod_rewrite_rules(). Если вам не нужно это поведение, вы можете отключить его с помощью хука flush_rewrite_rules_hard:
add_filter('flush_rewrite_rules_hard', '__return_false');
Примечания
- Функция глобальна и работает с компонентом WP_Rewrite, который доступен через переменную
$wp_rewrite.
Изменения
- С версии 1.5.0 — функция была представлена.
Код функции
Вот как выглядит работа функции save_mod_rewrite_rules():
function save_mod_rewrite_rules() {
global $wp_rewrite;
// Проверяем, является ли сайт мультиместным.
if (is_multisite()) {
return;
}
// Убедитесь, что get_home_path() определена.
require_once ABSPATH . 'wp-admin/includes/file.php';
$home_path = get_home_path();
$htaccess_file = $home_path . '.htaccess';
/*
* Если файл не существует, проверяем доступ к директории на запись
* и наличие правил. Если файл существует, проверяем доступ к файлу.
*/
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;
}
Связанные функции
Вот несколько функций, которые могут помочь при работе с перезаписью URL:
add_permastruct()add_rewrite_endpoint()add_rewrite_rule()add_rewrite_tag()flush_rewrite_rules()remove_permastruct()remove_rewrite_tag()WP_Rewrite()WP_Rewrite::flush_rules()
Эти функции позволяют настраивать и управлять "чистыми" URL в вашем сайте на WordPress.