Переадресация по клику на пост на пользовательский URL вместо страницы одиночного поста

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

У меня есть пользовательский тип сообщения под названием “статьи”. Когда по ссылке статьи щелкают, я хочу перенаправить их на кастомный 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, необходимо воспользоваться пользовательскими полями и настроить соответствующий шаблон вывода. Ваша задача заключается в том, чтобы заменить стандартную ссылку на запись на пользовательскую ссылку, хранящуюся в базе данных. Данный подход требует незначительных доработок как в коде, так и в настройках вашего сайта.

Пошаговая инструкция

  1. Создание пользовательского поля:
    Убедитесь, что у вас для типа записи "articles" создано пользовательское поле (например, с названием link). Оно будет хранить нужный вам URL. Вы можете использовать плагин Advanced Custom Fields (ACF) для упрощения этого процесса, если вы еще не сделали этого.

  2. Изменение вывода ссылки:
    В вашем шаблоне, где выводится список записей данного кастомного типа, необходимо изменить ссылку на запись следующим образом:

    <?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, в противном случае – ссылается на стандартную страницу записи.

  3. Настройка редиректа (по желанию):
    Если по каким-то причинам вам нужно будет выполнять редирект на уровне сервера (например, при прямом доступе к записи), вы можете воспользоваться хуком 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".

  4. Тестирование:
    После внесения изменений рекомендуется протестировать работу редиректа и вывод ссылок. Убедитесь, что при наличии пользовательского поля с внутренней ссылкой вы динамически получаете его значение, а при его отсутствии — выполняется резервный вариант.

Оптимизация SEO

Переход на кастомный URL может повлиять на индексирование вашего сайта. Убедитесь, что вы используете подходящие мета-теги и заголовки для каждой записи. Кроме того, вы можете добавить редиректы на старые URL, чтобы улучшить пользовательский опыт и сохранить ценность ссылок.

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

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

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