WP_Rewrite::flush_rules()
Обновляет правила перезаписи ссылок (ЧПУ) в базе данных и кэше.
С версии 3.0. для обновления правил перезаписи существует функция-обертка flush_rewrite_rules().
Нужно использовать после добавления новых правил перезаписи УРЛов, чтобы новые правила вступили в силу, иначе новые правила перезаписи работать не будут. Новые правила добавляются функцией add_rewrite_rule().
Не надо использовать функцию каждый раз при загрузке страницы. Не вешайте функцию на хуки, который вызывается при загрузке страницы, типа: init. Эта функция требовательна к ресурсам, поэтому, её нужно использовать один раз, например, во время активации/деактивации плагина/темы.
WordPress сохраняет все правила перезаписи в кэше. Иногда плагины, темы или функции могут добавить свои, новые правила перезаписи и WordPress ничего не будет знать об этих новых правилах, до тех пор, пока все правила не будут перезаписаны (обновлены).
Это не обычная функция, а метод класса WP_Rewrite, поэтому при вызове этого метода, нужно убедится что переменная $wp_rewrite
, содержащая в себе экземпляр класса WP_Rewrite, определена глобально. Вызывать метод нужно по правилам классов: $wp_rewrite->flush_rules();
.
ВАЖНО: Этот метод (функция) вызывается во время обновления настроек ЧПУ, поэтому для ручного обновления правил перезаписи можно просто зайти на страницу настроек ЧПУ (параметры > постоянные ссылки
) правила перезаписи при этом обновятся.
Метод класса: WP_Rewrite{}
Хуки из метода
Возвращает
null
. Функция ничего не возвращает.
Использование
$wp_rewrite->flush_rules();
Примеры
#1 Пример обновления правил перезаписи УРЛов:
// Убедимся, что переменная $wp_rewrite определена глобально global $wp_rewrite; $wp_rewrite->flush_rules();
Или можно так:
$GLOBALS['wp_rewrite']->flush_rules();
#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 | Введена. |