显示3个随机帖子的缩略图和链接的快捷代码

时间:2019-03-13 作者:rudtek

我想在页面顶部有一个小标题,显示具有相关自定义帖子类型链接的特色图像。

这是我的代码:

// Creates random image header within tax called(defaults to residential).
add_shortcode( \'rt-random-projects\', \'rt_random_projects\' );
function rt_random_projects($atts) {
  $a = shortcode_atts( array(
      \'category\' => \'residential\',
     ), 
    $atts 
    );
  $query = new WP_Query(
    array(
      \'post_type\' => \'jf_projects\',
      \'posts_per_page\' => \'3\',
      \'orderby\' => \'RAND\',
      \'tax_query\' => array(
        array(
          \'taxonomy\' => \'project_types\',
          \'field\' => \'slug\',
          \'terms\' => $a[\'category\'],
        )
      )
    )
  );
  $count = $query->post_count;
  $projects  =\'<div>\';
  while ( $query->have_posts() ) : $query->the_post();
        $projects .= \'<div class="projectheaderimg"><a href="\'.get_the_permalink().\'">\'.get_the_post_thumbnail(\'\',\'small\').\'</a></div>\';
  endwhile;  //end while posts
  $projects .=\'</div>\';
  wp_reset_postdata();

  // Code
  return $projects;
}
这会显示我的图片和帖子链接,但这不是随机的。无论我做什么,它仍然只显示相同的3个帖子。我怎样才能让它随机拉3个帖子?

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

从WordPress版本4.5开始,您可以使用RAND(seed) 使用orderby 参数

但是,当值为RAND (即大写rand), WP_Query 忽略它并默认为默认排序(按投递日期)。

我通过检查$query->request:

\'orderby\' => \'RAND\', 这个ORDER BY 条款为ORDER BY wp_posts.post_date DESC.

带有\'orderby\' => \'rand\', 这个ORDER BY 条款为ORDER BY RAND().

因此,解决方案很简单:Always use rand, 除非要使用种子。

SO网友:mrben522

这很可能是主机的问题。许多知名的WP托管公司默认禁用orderby random。如果他们很好(WPEngine),您可以寻求他们的支持并启用它。如果他们很差劲(戈达迪),你的请求可能就没那么幸运了<如果是这样的话,那么您需要编写一个函数来获取所有帖子,为每个帖子分配一个随机数,然后按该数字排序,并以这种方式选择排名前n位的帖子。这和听起来一样缓慢和糟糕。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post