Как перенаправить пользователей на случайный пост в WordPress
Существует такая функция на сайтах в виде кнопок, когда пользователь кликает на неё, его переносят в случайный пост на сайте. Мы посчитали, что будет интересно добавить кнопку как в гугле «Мне повезёт». В этой статье мы расскажем вам, как перенаправить пользователей на случайный пост в 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; } }
Пояснение сниппета:
Этот сниппет добавляет переменную Random. После чего использует template_redirect и сообщает: если переменная random здесть, то нужно получить пост случайно. После чего происходит простое перенаправление.
Причина, почему сниппет использует 307 перенаправление — так как это временное перенаправление. Часто браузера кешируют 302 редирект, который известен своими временными перенаправлениями.
Несколько возможных багов:
Если вы используете W3 Total Cache и у вас есть кеширующаяся база данных, то вам надо добавить следующие правила к листу исключений:
/random/
/index.php?random=1
Если вы используете Yoast SEO плагин, то не используйте флажок перенаправления плохих ссылок в области постоянных ссылок, иначе код не будет работать.
Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520
Ответить
Хотите присоединиться к обсуждению?Не стесняйтесь вносить свой вклад!