Больше результатов...

Generic selectors
Только точные совпадения
Искать в заголовках
Искать в контенте
Post Type Selectors
Filter by Categories
FAQ
Hostenko
Вдохновение
Видеоуроки
Новости
Плагины
Темы
Уроки
Хаки

В этой статье мы покажем, как перенаправлять пользователей на случайную запись в WordPress. Это достаточно нетривиальный прием, который очень часто может привлечь внимание ваших посетителей или клиентов. Например, если вы публикуете цикл обзоров популярных гаджетов или, скажем, подборку видео уроков о настройке чего-либо, — всегда можно добавить в боковой колонке кнопку на Случайный урок или обзор, это часто работает!

Откройте файл functions.php вашей темы и вставьте туда следующий код:

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
add_action('init','random_add_rewrite');
function random_add_rewrite() {
       global $wp;
       $wp->add_query_var('random');
       add_rewrite_rule('random/?$', 'index.php?random=1', 'top');
}

add_action('template_redirect','random_template');
function random_template() {
       if (get_query_var('random') == 1) {
               $posts = get_posts('post_type=post&orderby=rand&numberposts=1');
               foreach($posts as $post) {
                       $link = get_permalink($post);
               }
               wp_redirect($link,307);
               exit;
       }
}

Все, готово. Теперь создайте кнопку, которая будет вести на

http://ваш-сайт.com/index.php?random=1

и указанный выше фрагмент кода сделает все остальное.

Объяснение кода:

Этот код сначала добавляет переменную запроса Random. Затем он использует зацепку template_redirect и говорит, что если есть переменная random, то взять запись типа "Post" случайным образом. Затем он делает просто 307 редирект.

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

Несколько багов, через которые мы прошли:

Если вы используете W3 Total Cache и у вас включено кеширование базы данных, вам нужно добавить следующие правила в список исключений:

/random/
/index.php?random=1

Если вы используете плагин Yoast’s WordPress SEO, просто не ставьте отметку возле пункта Redirect Ugly URLs в блоке постоянных ссылок, иначе код не будет работать.

Источник:WPBeginner
inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующий на создание сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Комментарии к записи: 13

Андрей:

Здравствуйте!
Ваш код не работает.

WordPresso:

Попробуйте указать в ссылке вместо ваш-сайт.com/random/
ваш-сайт/index.php?random=1

Андрей:

Большое вам спасибо! Всё работает! Ещё вопрос: из-за этого рандома у меня не будет в выдаче поисковиков дублей?

WordPresso:

Нет, поисковикам эта функция никак не страшна.

Ivan Evdokimoff:

Добрый день.
Интересует вывод рандомного поста из определенной категории. Не подскажите, как это можно сделать?

WordPresso:

Возьмите за основу наш код, и нужно будет добавить условие проверки по рубрике!

Ivan Evdokimoff:

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

Tunalyk:

Все спасибо, отлично работает! Но это только одна ссылка выбора случайной записи из определенной категории. А как сделать так чтобы бы было куча различных подобных ссылок по рубрикам. Пытался копировать этот код несколько раз подряд, но выдает ошибку

aleks999:

Код работает. Спасибо. Кому нужен случайный пост из определенной категории читайте инфу по функции get_posts и добавляйте нужные параметры.

Сергей:

Всё великолепно работает… только один раз, а нужно чтоб каждый раз выдавалась новая случайная статья. У меня установлен W3 Total Cache и «нужно добавить следующие правила в список исключений…» не работает. Может не туда добавляю? Куда нужно добавить эти правила, в каком разделе плагина? Посоветуйте как победить кеш, пожалуйста. Может надо сделать отдельную страницу (ваш-сайт.com/random/) и задать её в исключения? Тогда куда Ваш код прописывать?
Кстати, при полном отключении плагина всё и у всех (читателей) отлично работает многократно, так что это точно плагин мутит :) .

Виктор:

В код нужно дописать один момент, чтобы случайная запись не была та же, что сейчас открыта. А то я нажимаю и три раза подряд выводится одна и та же запись. А так код супер. Автор молодец. Предлагаю ссылку на готовые, оформленные кнопки

Андрей:

Добрый день.
Создал новый сайт, Google успел проиндексировать 5 статей. На сайте использую этот код открытия случайной статьи.

Проблема в том, что в поисковике при вводе запроса «site:название сайта» выходит список этих 5 статей, а затем сообщение:
«Мы скрыли некоторые результаты, которые очень похожи на уже представленные выше (5)».

Нажав на «Показать скрытые результаты», открывается только одна ссылка:
«сайт.ru/index.php?random=1
Описание веб-страницы недоступно из-за ограничений в файле robots.txt. Подробнее…».

Как решить эту проблему? Подскажите, пожалуйста.
Заранее большое спасибо!

Васлиий:

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

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