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

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
теми
Уроки
Хакі

У цій статті ми покажемо, як перенаправляти користувачів на випадковий запис WordPress. Це досить нетривіальний прийом, який часто може привернути увагу ваших відвідувачів або клієнтів. Наприклад, якщо ви публікуєте цикл оглядів популярних гаджетів або, скажімо, добірку відео уроків про налаштування чогось, завжди можна додати в бічній колонці кнопку на Випадковий урок або огляд, це часто працює!

Відкрийте файл functions.php вашої теми та вставте туди наступний код:

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

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

Пояснення коду:

Цей код спочатку додає змінну запиту випадковий. Потім він використовує зачіпку шаблон_перенаправлення і каже, що якщо є змінна випадковий, то взяти запис типу "пошта" випадковим чином. Потім він робить просто 307 редирект.

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

Декілька багів, через які ми пройшли:

Якщо ви використовуєте W3 Total Cache і у вас включено кешування бази даних, вам потрібно додати такі правила до списку винятків:

/random/
/index.php?random=1

Якщо ви використовуєте плагін WordPress SEO від Yoastпросто не ставте позначку біля пункту Redirect Ugly URLs у блоці постійних посилань, інакше код не працюватиме.

Джерело: WPBeginner
редактор 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 зробив по вашому і працює.

Додати коментар