Как изменить родительскую постоянную ссылку?

Вопрос или проблема

У меня есть тема с жестко заданной структурой постоянных ссылок для некоторых постов. Эти посты открываются с помощью

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).

Шаги для решения проблемы

  1. Подтверждение изменений в функциях: Убедитесь, что код в файле 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);
    }
  2. Сброс правил перезаписи: После изменения структуры URL в WordPress необходимо сбросить правила их перезаписи. Это можно сделать несколькими способами:

    • Программный подход: Временно добавьте в ваш код следующую строку для сброса правил при каждом обновлении страницы. Не забудьте удалить ее после успешного выполнения сброса, чтобы избежать излишней нагрузки на сервер.

      add_action('init', 'flush_rewrite_rules');
    • Через панель администратора: Перейдите в "Настройки" > "Постоянные ссылки" и просто нажмите "Сохранить изменения". Это автоматически сбросит правила перезаписи.

  3. *Проверка изменений**: После выполнения вышеуказанных шагов, обязательно проверьте, загружаются ли страницы по новой структуре ссылок (site.com/newparent/page).

Дополнительные Рекомендации

  • Резервное копирование: Прежде чем вносить изменения в код вашей темы, всегда делайте резервную копию файлов и базы данных. Это поможет избежать потери данных при возникновении непредвиденных ошибок.

  • Оптимизация: Если вы планируете частые изменения структуры постоянных ссылок, рассмотрите возможность создания пользовательского плагина для обработки таких задач. Это делает процесс более структурированным и управляемым.

  • Документация: Ознакомьтесь с документацией WordPress о функциях для работы с ссылками и таксономиями. Это поможет понять, как работают механизмы перезаписи и какие есть лучшие практики.

Соблюдая вышеуказанные шаги и рекомендации, вы сможете успешно изменить структуру ссылок вашего проекта на WordPress и избежать проблем с загрузкой страниц.

Оцените материал
Добавить комментарий

Капча загружается...