Как настроить перенаправление на случайный пост в WordPress

## ПЕРЕНАПРАВЛЕНИЕ НА СЛУЧАЙНЫЙ ПОСТ В WORDPRESS

В этой статье я расскажу, как перенаправить пользователей на случайный пост в WordPress.

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

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

## РЕАЛИЗАЦИЯ

### 1. Вставьте следующий код в файл functions.php вашего шаблона:

```php
add_action('init', 'random_rewrite_rule');
add_action('template_redirect', 'template_redirect_to_random');

/*
 * Перенаправление на случайный пост
 */
function random_rewrite_rule() {
    $GLOBALS['wp']->add_query_var('random');
    add_rewrite_rule('random/?$', 'index.php?random=random', 'top');
}

function template_redirect_to_random() {
    if (get_query_var('random') != 'random') 
        return;

    $random_post = get_posts('orderby=rand&numberposts=1');
    $random_post = array_shift($random_post);
    $link = get_permalink($random_post);

    wp_redirect($link, 307);
    exit;
}

2. Перейдите в панель администратора: Настройки > Пермалины и просто нажмите на кнопку "Сохранить изменения". Это необходимо для обновления правил перенаправления URL и добавления нашего нового правила.

3. Вставьте ссылку http://example.com/random в нужном месте вашего шаблона. Или используйте этот код:

Случайный пост

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

ЗАМЕТКИ ПО КОДУ

Этот код добавляет переменную запроса (add_query_var) для проверки: перенаправлять, если переменная запроса существует и равна "random". Эта проверка используется во время события template_redirect.

Во время перенаправления используется статус 307 (временное перенаправление) вместо 302 (найдено), потому что некоторые браузеры кэшируют статус 302, и в этом случае случайный выбор поста не будет работать.

ВОЗМОЖНЫЕ ОШИБКИ

Для плагинов кэширования страниц может понадобиться указать правила исключения: URL-адреса, которые не должны кэшироваться. Правила будут следующими:

  • /random
  • /index.php?random=random

На этом всё. Надеюсь, что это будет полезно кому-то.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *