WP_Rewrite::flush_rules() publicWP 2.0.1

Оновлює правила перезапису посилань (ЧПУ) у базі даних та кеші.

З версії 3.0. для оновлення правил перезапису існує функція обгортка flush_rewrite_rules() .

Потрібно використовувати після додавання нових правил перезапису УРЛів, щоб нові правила набули чинності, інакше нові правила перезапису не працюватимуть. Нові правила додаються функцією add_rewrite_rule() .

Не потрібно використовувати функцію щоразу під час завантаження сторінки. Не вішайте функцію на хуки, що викликається під час завантаження сторінки, типу: init . Ця функція вимоглива до ресурсів, тому її потрібно використовувати один раз, наприклад, під час активації/деактивації плагіна/теми.

WordPress зберігає всі правила перезапису у кеші. Іноді плагіни, теми або функції можуть додати свої, нові правила перезапису і WordPress нічого не знатиме про ці нові правила, доки всі правила не будуть перезаписані (оновлені).

Не звичайна функція, а метод класу WP_Rewrite , тому за виклику цього, необхідно переконається що змінна $wp_rewrite, що містить у собі екземпляр класу WP_Rewrite , визначена глобально. Викликати спосіб необхідно за правилами классов: $wp_rewrite->flush_rules();.

ВАЖЛИВО: Цей метод (функція) викликається під час оновлення настройок ЧПУ, тому для ручного оновлення правил перезапису можна просто зайти на сторінку налаштувань ЧПУ ( параметры > постоянные ссылки) правила перезапису при цьому оновляться.

{} Це метод класу: WP_Rewrite{}

Основа для:
flush_rewrite_rules()

Хуки з методу

Повертає

null. Функція нічого не повертає.

Використання

$wp_rewrite->flush_rules();

Приклади

0

#1 Приклад оновлення правил перезапису УРЛів:

// Переконаємося, що змінну $wp_rewrite визначено глобально
global $wp_rewrite;
$wp_rewrite->flush_rules();

Або можна так:

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

#2 Приклад оновлення правил перезапису з використанням функції flush_rewrite_rules()під час активації плагіна:

register_activation_hook( __FILE__, 'author_base_rewrite' );
function author_base_rewrite(){
	flush_rewrite_rules(false);
}

flush_rewrite_rules( false ) – false вказує, що не потрібно оновлювати файл .htaccess, якщо не вказати false, то файл .htaccessбуде оновлено відповідно до правил.

список змін

З версії 2.0.1Введено.

Код WP_Rewrite::flush_rules() WP 6.0.2

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

	// Prevent this action from running before everyone має registered їх 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);
	}

	update_option( 'rewrite_rules', '');
	$this->wp_rewrite_rules();

	/**
	 * Filters whether a "hard" rewrite rule flush should be performed when requested.
	 *
	 * A "hard" flush updates .htaccess (Apache) або web.config (IIS).
	 *
	 * @ Since 3.7.0
	 *
	 * @param bool $hard Whether до flush rewrite rules "hard". Default true.
	 */
	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();
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *