Вопрос или проблема
У меня есть пользовательский тип сообщения под названием “статьи”. Когда по ссылке статьи щелкают, я хочу перенаправить их на кастомный URL (этот URL сохранен в базе данных как пользовательское поле) вместо страницы. Как я могу это сделать? Я не смог найти хук действия/фильтр для этого?
Для перенаправления на кастомный URL вам нужно изменить ссылку на детали сообщения на кастомный URL. Вы просто удаляете ссылку на сообщение и применяете кастомный URL.
<a href="https://wordpress.stackexchange.com/questions/353574/<?php echo get_field("link"); ?>"><?php the_title(); ?></a>
В моем случае “link” — это кастомный URL.
.
Ответ или решение
Для реализации редиректа на пользовательский URL вместо стандартной страницы записи в WordPress, необходимо воспользоваться пользовательскими полями и настроить соответствующий шаблон вывода. Ваша задача заключается в том, чтобы заменить стандартную ссылку на запись на пользовательскую ссылку, хранящуюся в базе данных. Данный подход требует незначительных доработок как в коде, так и в настройках вашего сайта.
Пошаговая инструкция
-
Создание пользовательского поля:
Убедитесь, что у вас для типа записи "articles" создано пользовательское поле (например, с названиемlink
). Оно будет хранить нужный вам URL. Вы можете использовать плагин Advanced Custom Fields (ACF) для упрощения этого процесса, если вы еще не сделали этого. -
Изменение вывода ссылки:
В вашем шаблоне, где выводится список записей данного кастомного типа, необходимо изменить ссылку на запись следующим образом:<?php // Получаем кастомное поле с URL $custom_url = get_field('link'); // Проверяем, установлен ли URL if ($custom_url) { echo '<a href="' . esc_url($custom_url) . '">' . get_the_title() . '</a>'; } else { // Резервный вариант на случай отсутствия URL echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a>'; } ?>
Данный код проверяет, существует ли пользовательский URL. Если он установлен, то выводит ссылку на этот URL, в противном случае – ссылается на стандартную страницу записи.
-
Настройка редиректа (по желанию):
Если по каким-то причинам вам нужно будет выполнять редирект на уровне сервера (например, при прямом доступе к записи), вы можете воспользоваться хукомtemplate_redirect
. Добавьте следующий код в файлfunctions.php
вашей темы:function redirect_custom_post_type() { if (is_singular('articles')) { $custom_url = get_field('link'); if ($custom_url) { wp_redirect($custom_url); exit; } } } add_action('template_redirect', 'redirect_custom_post_type');
Этот код перенаправит всех пользователей на кастомный URL, если они попытаются открыть страницу записи типа "articles".
-
Тестирование:
После внесения изменений рекомендуется протестировать работу редиректа и вывод ссылок. Убедитесь, что при наличии пользовательского поля с внутренней ссылкой вы динамически получаете его значение, а при его отсутствии — выполняется резервный вариант.
Оптимизация SEO
Переход на кастомный URL может повлиять на индексирование вашего сайта. Убедитесь, что вы используете подходящие мета-теги и заголовки для каждой записи. Кроме того, вы можете добавить редиректы на старые URL, чтобы улучшить пользовательский опыт и сохранить ценность ссылок.
Таким образом, вы можете успешно перенаправить пользователей на нужный вам ресурс, обеспечивая одновременно гибкость и легкость в использовании сайта.