WP_REWRITE::FLUSH_RULES() — Обновление правил адресации в WordPress

WP_REWRITE::FLUSH_RULES() — Обновление правил адресации в WordPress

Что это за метод?

Метод WP_REWRITE::FLUSH_RULES() отвечает за удаление и обновление правил переписывания URL в WordPress. Это важно для правильной работы "чистых" и удобных URL-адресов на сайте.

Как это работает?

После удаления старых правил, метод вызывает WP_Rewrite::wp_rewrite_rules(), чтобы создать новые правила. Если существует функция с названием save_mod_rewrite_rules, она будет также вызвана.

Кому полезен этот метод?

Метод используется, например, в функции flush_rewrite_rules(), которая позволяет обновлять правила переписывания.

Как это использовать?

Чтобы использовать этот метод, сначала необходимо объявить глобальную переменную $wp_rewrite, а затем вызвать метод flush_rules().

global $wp_rewrite;
$wp_rewrite->flush_rules($hard);

Параметр $hard:

  • true (по умолчанию) — обновляет файл .htaccess (жесткое обновление).
  • false — обновляет только опцию rewrite_rules (мягкое обновление).

Примеры использования

Пример 1: Обновление правил переписывания

// Убедитесь, что переменная $wp_rewrite определена глобально
global $wp_rewrite;

$wp_rewrite->flush_rules();

Либо можно сделать так:

$GLOBALS['wp_rewrite']->flush_rules();

Пример 2: Обновление при активации плагина

register_activation_hook( __FILE__, 'author_base_rewrite' );

function author_base_rewrite(){
    flush_rewrite_rules(false);
}

В этом примере flush_rewrite_rules(false) говорит, что файл .htaccess не должен обновляться. Если не указать false, файл будет обновлен.

Возврат

Метод ничего не возвращает (null).

Обновления и изменения

Метод был введен в версии 2.0.1.

Как он выглядит в коде?

Ниже приведен код самого метода flush_rules:


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

// Предотвращаем выполнение действия, пока все правила не будут зарегистрированы.
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();

/**
 * Фильтрует, нужно ли выполнять "жесткое" обновление правил переписывания.
 *
 * "Жесткое" обновление обновляет .htaccess (для Apache) или web.config (для IIS).
 */
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();
}

}

Связанные функции

Вот некоторые функции, которые могут помочь при работе с правилами переписывания:

  • add_permastruct()
  • add_rewrite_endpoint()
  • add_rewrite_rule()
  • add_rewrite_tag()
  • remove_permastruct()
  • remove_rewrite_tag()
  • WP_Rewrite()

Используйте данные функции для настройки и управления правилами переписывания на вашем сайте.

Leave a Reply

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