## ПЕРЕНАПРАВЛЕНИЕ НА СЛУЧАЙНЫЙ ПОСТ В 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
На этом всё. Надеюсь, что это будет полезно кому-то.