Обновление правил mod_rewrite с функцией save_mod_rewrite_rules() – WP 1.5.0

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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *