Вопрос или проблема
У меня есть тема с жестко заданной структурой постоянных ссылок для некоторых постов. Эти посты открываются с помощью
site.com/parent/page
структуры.
Я создал фильтр, который заменяет ссылку с “site.com/parent/page” на “site.com/newparent/page” в functions.php с помощью:
add_action('init', 'change_slug_of_post_type_parent', 20);
function change_slug_of_post_type_parent()
{
$args = get_post_type_object("parent");
$args->rewrite["slug"] = "newparent";
register_post_type($args->name, $args);
}
Теперь ссылки генерируются правильно, но когда я на них нажимаю, страница не загружается.
Может кто-нибудь помочь? Я уверен, что это легко исправить, но я не могу с этим разобраться. Я новичок в программировании на WordPress (ранее использовал GSCMS и CMSGS).
Спасибо
Беноти разместил решение в комментариях: “Вы сбросили правила перезаписи?”
Как сбросить: https://www.webhostinghero.com/3-ways-to-flush-the-rewrite-cache-in-wordpress/
Ответ или решение
Чтобы изменить базовую ссылку (parent permalink) в вашей WordPress-теме, выполните следующие действия. Вы указали, что уже создали фильтр, чтобы изменить структуру постоянных ссылок с "site.com/parent/page" на "site.com/newparent/page". Однако, возникла проблема: при клике по сгенерированной ссылке, страница не загружается. Вероятно, это связано с необходимостью сброса правил перезаписи URL (flush rewrite rules).
Шаги для решения проблемы
-
Подтверждение изменений в функциях: Убедитесь, что код в файле
functions.php
для изменения слага инициализируется корректно. Ваш код выглядит следующим образом:add_action('init', 'change_slug_of_post_type_parent', 20); function change_slug_of_post_type_parent() { $args = get_post_type_object("parent"); $args->rewrite["slug"] = "newparent"; register_post_type($args->name, $args); }
-
Сброс правил перезаписи: После изменения структуры URL в WordPress необходимо сбросить правила их перезаписи. Это можно сделать несколькими способами:
-
Программный подход: Временно добавьте в ваш код следующую строку для сброса правил при каждом обновлении страницы. Не забудьте удалить ее после успешного выполнения сброса, чтобы избежать излишней нагрузки на сервер.
add_action('init', 'flush_rewrite_rules');
-
Через панель администратора: Перейдите в "Настройки" > "Постоянные ссылки" и просто нажмите "Сохранить изменения". Это автоматически сбросит правила перезаписи.
-
-
*Проверка изменений**: После выполнения вышеуказанных шагов, обязательно проверьте, загружаются ли страницы по новой структуре ссылок (
site.com/newparent/page
).
Дополнительные Рекомендации
-
Резервное копирование: Прежде чем вносить изменения в код вашей темы, всегда делайте резервную копию файлов и базы данных. Это поможет избежать потери данных при возникновении непредвиденных ошибок.
-
Оптимизация: Если вы планируете частые изменения структуры постоянных ссылок, рассмотрите возможность создания пользовательского плагина для обработки таких задач. Это делает процесс более структурированным и управляемым.
-
Документация: Ознакомьтесь с документацией WordPress о функциях для работы с ссылками и таксономиями. Это поможет понять, как работают механизмы перезаписи и какие есть лучшие практики.
Соблюдая вышеуказанные шаги и рекомендации, вы сможете успешно изменить структуру ссылок вашего проекта на WordPress и избежать проблем с загрузкой страниц.