Wählen Sie jeden Tag einen zufälligen Post aus

Ich suche nach einem Skript, um 1 zufälligen Beitrag pro Tag in WordPress auszuwählen. Ich habe den unten stehenden Code gefunden, der jedoch jedes Mal, wenn ich die Seite aktualisiere, einen neuen Beitrag sammelt:

 1, 'orderby' => 'rand', 'post_type' => 'listing'); $totd = get_posts($args); remove_filter('posts_orderby', 'force_random_day_seed'); foreach( $totd as $post ) : ?>    

Irgendwelche Ideen?

Solutions Collecting From Web of "Wählen Sie jeden Tag einen zufälligen Post aus"

Beachten Sie, dass der posts_orderby Filter nicht für get_posts() verfügbar ist, wobei suppress_filters standardmäßig true ist.

Sie können stattdessen WP_Query verwenden:

 $args = [ 'posts_per_page' => 1, 'orderby' => 'rand', 'post_type' => 'listing', 'ignore_sticky_posts' => true, ]; add_filter( 'posts_orderby', 'force_random_day_seed' ); $q = new WP_Query( $args ); remove_filter( 'posts_orderby', 'force_random_day_seed' ); if( $q->have_posts() ) { while( $q->have_posts() ) { $q->the_post(); the_title(); } wp_reset_postdata(); } else { _e( 'Sorry no posts found!' ); } 

Es ist auch möglich, den posts_orderby Filter-Callback zu überspringen und nur Transienten zu verwenden, um die Ergebnisse für 24 Stunden zu speichern.

Versuchen Sie folgenden Code zu verwenden: –

  < ?php function force_random_day_seed($orderby) { $seed = floor( time() / DAY_IN_SECONDS ); $orderby=str_replace('RAND()', "RAND({$seed})", $orderby); return $orderby; } add_filter('posts_orderby', 'force_random_day_seed'); $temp_value = get_option(current_time('Ym-d')); if($temp_value == '' ){ $args = array('numberposts' => 1, 'orderby' => 'rand', 'post_type' => 'listing'); $totd = get_posts($args); foreach($totd as $k=>$v){ update_option(current_time('Ym-d'),$v->ID); } }else{ $totd = get_posts($temp_value); } remove_filter('posts_orderby', 'force_random_day_seed'); foreach( $totd as $post ) : ?> < ?php the_title(); ?> < ?php the_content(); ?> < ?php endforeach; ?>