我想在页面顶部有一个小标题,显示具有相关自定义帖子类型链接的特色图像。
这是我的代码:
// 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个帖子?
最合适的回答,由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
, 除非要使用种子。