У мене виникає дивна проблема, коли правила перезапису не спрацьовують належним чином.
Я спробував використовувати flush_rewrite_rules();
і flush_rewrite_rules(true);
.
Я також спробував глобалізувати $wp_rewrite
використання $wp_rewrite->flush_rules();
та$wp_rewrite->flush_rules(true);
Жодне з яких, здається, не відповідає правильності переписання правил. Ці дзвінки справді стирають правила перезапису при дзвінку. Звідки я це знаю? Використання рішення для налагодження промивання правил перезапису .
Наразі я переписав правила, що розмиваються щодо активації плагінів та дезактивації плагінів. Ніяких питань там немає.
У мене є сторінка налаштувань адміністрування плагінів, щоб користувачі могли налаштувати плагін. Деякі з налаштувань коригують структуру постійної посилання, тому правила перезапису потрібно списати на сторінці налаштувань плагіну "Зберегти настройки". (Використовує стандарт update_option();
) для збереження налаштувань.
Хочу зазначити, що залежно від заданих налаштувань створюються спеціальні типи публікацій, щоб відповідати визначеним користувачем параметрам. Тож правила перезапису повинні бути стерті відразу після збереження налаштувань. Тут все не працює належним чином.
Наведене вище рішення посилань для налагодження правил перезапису, представлене програмою @toscho
, показує, що вона стирає тонни правил перезапису. Однак, відвідуючи спеціальний елемент спеціального типу публікації або навіть спеціальний архів типу публікації з цього приводу, кожен повертається як 404 помилки.
Спеціальний тип публікації зареєстровано правильно та належним чином. Я точно знаю, що це не проблема.
Відразу після налаштування сторінки адміністрування плагіну збережіть. Створюються спеціальні типи публікацій, коригується структура постійної посилання, і всі правила перезапису намагаються стерти.
Потім користувацькі типи публікацій завантажуються завжди та завантажуються init
як звичайні.
Чомусь правила перезапису не стираються належним чином, тому що, як я вже говорив раніше, відвідуючи окремі або архівні розділи спеціального типу публікації, повертаються 404 помилки.
Тепер дивна частина, якщо все, що я роблю, - це просто відвідати сторінку налаштувань постійних посилань адміністрації, а потім повернутися до переднього кінця, щоб переглянути окремі або архівні розділи користувацького типу публікації, вони магічно працюють, як очікувалося.
Що робить ця сторінка налаштувань постійних посилань адміністрації, що я не роблю, що дозволяє переписати правила належним чином розмиватись, а мої - ні?
Я маю на увазі, як тимчасове рішення я перенаправляю користувача на сторінку налаштувань постійних посилань адміністрації після збереження сторінки налаштувань адміністрування плагінів, але це не ідеальне рішення. Я вважаю за краще, щоб правила перезапису просто стиралися належним чином у коді мого плагіна.
Чи є певний момент у WordPress, коли промивання правил перезапису просто більше не стирає ВСІ правила?
admin_menu
- Сторінка налаштувань плагіна додається до адміністрування WordPress.
add_options_page()
- Сторінка налаштувань плагіна додається в меню Налаштування.
Сторінка налаштувань відображається під час зворотного дзвінка для add_options_page()
. Це також $_POST
обробляється для оновлення налаштувань плагіна та правил перезапису.
Оскільки це вже довге питання, я б готовий надати кодові блоки (якщо це допоможе) в посилання на сторонній сайт, що допоможе створити дійсну відповідь.
init
якому реєструються типи публікацій. Я зрозумів, що налаштування сторінки зберігаються, і сторінка буде перезавантажена ... потім знову запустити init
гачок, щоб зареєструвати необхідні типи публікацій. Тому я подумав, що типи публікацій уже завантажуються, і все, що мені потрібно було зробити, це оновити параметр, а потім стерти правила перезапису зі своєї сторінки налаштувань плагіна. Я опублікую відповідь про те, як я зрозумів рішення.
flush_rewrite_rules
, яка просто видаляєrewrite_rules
параметр і відновлює його, ви можете відкрити файлwp-admin/options-permalinks.php
і подивитися, де це відбувається. оскільки ця операція просто видаляє всю опцію, частково не можна очистити правила.