每隔3天显示不同的帖子

时间:2016-09-04 作者:Peanuts

我们在主页上有一个部分,我们希望每3天显示一个不同的(随机)帖子。

我正在想办法。这将给我们一个每周的帖子,但我不知道如何每3天获得一个帖子…:

<?php
            global $post;
            $args = array(
                \'post_type\' => \'girls_tips\',
                \'posts_per_page\' => 1,
                \'no_found_rows\' => true, 
                \'offset\' => (date( \'W\' ) - 1)
            );
            $posts = get_posts($args);
            foreach($posts as $post):
            setup_postdata($post);
            ?>

            <h2><?php the_title(); ?></h2>

            <?php endforeach; ?>
任何帮助都将不胜感激!干杯

2 个回复
SO网友:Rarst

您的代码示例不是随机的,而是基于周数的固定偏移量。

如前所述,我认为这不是可以在查询API中表达的东西。

您可能需要使用以下算法跟踪状态:

查询随机帖子,存储其ID,提前三天存储日期,如果尚未超过检查日期,则显示已存储帖子,如果已超过日期,则从头开始重复(并从查询中排除当前帖子)

SO网友:Adrian Lambertz

试试这个-它应该适合你的需要。注意,我几乎没试过。。。在现场环境中使用之前,请先进行自我测试。

// calculate times
$second = 1;
$minute = $second * 60;
$hour   = $minute * 60;
$day    = $hour * 24;
$days   = $day * 3;


$time = time(); //get current timestamp
$random_post_timestamp = get_option(\'my_random_post_timestamp\'); //get timestamp of queried post

if( $random_post_timestamp ) {
  $diff = $time - $random_post_timestamp;

  if( $diff >= $days ) { // if timestamp older than 3 days, delete the option
    delete_option(\'my_random_post\');
    delete_option(\'my_random_post_timestamp\');
  }
}

if( get_option(\'my_random_post\') ) { // is there a option with my id?
  //yes, it shoukd be used in my query
  $args = array( \'p\' => get_option(\'my_random_post\') ); 
} else {

   //no, query a new one
  $args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => 1,
    \'limit\' => 1,
    \'orderby\' => \'rand\',
    \'meta_key\'     => \'already_shown_in_random\',
    \'meta_compare\' => \'NOT EXISTS\' //only query posts that don\'t have a the \'already_shown_in_random\' meta
  );
}

// the query
$random_post = new WP_Query($args);
if( $random_post->have_posts() ):
  while( $random_post->have_posts() ): $random_post->the_post();

    if( !get_option(\'my_random_post\') ) { //if not already populated, store my id and the current timestamp in the options
      add_option(\'my_random_post\', get_the_id() );
      add_option(\'my_random_post_timestamp\', time() );

      add_post_meta( get_the_id() , \'already_shown_in_random\', \'yes\'); //add a post meta so that this post isnt queried a second time
    }

    /* DO YOUR STUFF HERE!!!!! */


  endwhile;
  wp_reset_postdata();
endif;
它做什么Rarst 在他之前的回答中。。。

相关推荐

WordPress使用AJAX的UPDATE_USER_META onClick按钮

我有一个按钮,限制为7次单击,当单击数字5被禁用时,我的问题是,如果用户从不同的设备登录,计数将从0开始,与刷新页面相同。我的需要是,在user\\u meta中保存单击编号结果,如果再次单击,则更新,直到单击编号5,按钮更改为禁用。在DB user\\u meta info中:user\\u id:user\\u idmeta\\u键:clickCounterTravmeta\\u值:1(单击次数)这是页面加载时的代码,如果单击次数大于,则禁用按钮;4.Do Not Work:<script>