Intereting Posts
Как изменить цвета тем, используя тему Блог имеет бесконечный цикл перенаправления для страницы с защитой от роли, программной загрузки пользователя и загрузки страницы Как изменить номер порта WordPress на 8000? Как изменить URL-адреса страниц на «www.site.com/page» вместо «example.com/blog/page», но сохранить URL-адреса сообщений как «example.com/blog/post»? Как заставить WordPress search.php отображать все строки, найденные на страницах или сообщениях Пользовательский поиск формы в wordpress the_excerpt Подробнее фильтр Визуальный редактор замораживает текст с 4,3 Почему есть /index.php/ во всех моих ссылках? Как его удалить? Шаги, которые нужно предпринять, чтобы скрыть факт, что сайт использует WordPress? Функция image_send_to_editor возвращает тег title emty RAM исчерпана: PHP Cronjob – как оптимизировать его Возможно ли иметь архив таксономии, в котором перечислены термины таксономии? Показывать сообщение определенной категории по выбранному году из раскрывающегося списка

Как создать случайную запись, которая будет длиться целый день

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

Я хочу случайное сообщение, которое будет длиться целый день, а после 24 часов или дня, это будет случайным образом изменяться, это будет возможно? или есть плагин, который именно это делает,

на самом деле то, что я пытаюсь создать, похоже на «Случайный совет на день», вы знаете что-то подобное

Надеюсь, кто-то поймет мой вопрос

пожалуйста, помогите, любая помощь будет оценена по достоинству.

Solutions Collecting From Web of "Как создать случайную запись, которая будет длиться целый день"

Вот какой код выполняет то, что вы просили, и используя идеи, которые другие выделили:

<?php if ( false === ( $totd_trans_post_id = get_transient( 'totd_trans_post_id' ) ) ) { $args = array('numberposts' => 1, 'orderby' => 'rand'); $totd = get_posts($args); $midnight = strtotime('midnight +1 day'); $timenow = time(); $timetillmidnight = $midnight - $timenow; echo $midnight; echo ",".$timenow; set_transient('totd_trans_post_id', $totd[0]->ID, $timetillmidnight); } else { $args = array('post__in' => array($totd_trans_post_id)); $totd = get_posts($args); } foreach( $totd as $post ) : setup_postdata($post); ?> <div> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php the_content(); ?> </div> <?php endforeach; ?> 

get_posts () help Плюс, как я закодировал, он должен каждый день переписывать сообщение «Совет дня» в полночь.

Это может быть улучшено, потому что мы показываем случайные, нет ничего, останавливая одно и то же сообщение, показываемое дважды подряд …

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

Используйте следующую функцию:

 function force_random_day_seed($orderby) { $seed = floor( time() / DAY_IN_SECONDS ); $orderby=str_replace('RAND()', "RAND({$seed})", $orderby); return $orderby; } 

Затем, вокруг вашего WP_Query или get_posts или что бы то ни было, что вы получаете этот единственный пост, используйте этот код фильтра:

 add_filter('posts_orderby', 'force_random_day_seed'); $args = array('numberposts' => 1, 'orderby' => 'rand'); $totd = get_posts($args); remove_filter('posts_orderby', 'force_random_day_seed'); 

Это добавляет фильтр, получает сообщение, а затем удаляет фильтр.

Установив семя на число, которое меняется один раз в день, случайный будет давать одинаковый ответ каждый раз за этот день. Затем он будет давать разные случайные числа, каждые DAY_IN_SECONDS.

Нет переходных процессов, нет необходимости хранить данные.

Обновление для WordPress 4.5+

Заказ в случайном порядке, содержащий начальное значение, теперь поддерживается в WordPress 4.5+:

 $rand = sprintf( 'RAND(%d)', floor( time() / DAY_IN_SECONDS ) ); $args = array( 'numberposts' => 1, 'orderby' => $rand ); $totd = get_posts($args); 

См. Билет № 35692 для получения дополнительной информации.

Вы можете использовать API Transients, как сказал кайзер. Просто сохраните случайный идентификатор сообщения со сроком службы 24 часа. Чтобы выбрать случайную запись, вы можете установить аргумент get_posts() для get_posts() в "rand" .

Пример использования примера:

 function wpse17056_twentyfour_sticky_post() { $transient = get_transient( 'twentyfour_sticky_post' ); // set transient if none is present if ( false === $transient ) { $rand_post = get_posts( array( 'numberposts' => 1, 'orderby' => 'rand') ); set_transient( 'twentyfour_sticky_post', $rand_post[0]->ID, DAY_IN_SECONDS ); } } add_action( 'init', 'wpse17056_twentyfour_sticky_post', 0 ); 

Взаимодействие с API переходных процессов . Вы могли бы прикрепить к ней что-то вроде «липкого» или определенной категории или термина.