在我的主页上,我希望能够查询整个分页中一致的随机帖子。 我发现使用'wp_query'的几个解释,但我正在寻找一个可以帮助我'get_posts'的解决方案。
这是我到目前为止的代码:
foreach ( $categories as $category ) {
global $post;
$myposts = get_posts(array(
'post_type' => 'portfolio',
'orderby' => 'rand',
'posts_per_page' => 1,
'numberposts' => -1, // get all posts.
'tax_query' => array(
array(
'taxonomy' => 'portfolio_categories',
'field' => 'id',
'terms' => $category->cat_ID
)
)
));
foreach ( $myposts as $post ){
setup_postdata( $post );
// stuff of posts
}
wp_reset_postdata(); }
答案 0 :(得分:0)
get_posts()
在幕后使用WP_Query()
课程。因此,您可以使用WP_Query()
执行任何操作,您可以使用get_posts()
执行此操作,但几乎没有记录的例外情况。
虽然您可以通过posts_orderby
过滤器轻松处理此问题,但自Wordpress 4.5起,WP_Query()
类支持使用内置的MySQL RAND(n)
种子值,允许你提取一组一致的随机帖子。
举个例子:
$posts = get_posts(array(
'post_type' => 'portfolio',
'orderby' => 'rand(1234)',
'posts_per_page' => 1,
'numberposts' => -1, // get all posts.
'tax_query' => array(
array(
'taxonomy' => 'portfolio_categories',
'field' => 'id',
'terms' => $category->cat_ID
)
)
));
只要在每个查询上传递1234,就会返回相同的随机帖子集,因此您可以轻松地进行分页。如果传递新值(即5678),则随机集将更改。这里的思考过程是为每个用户会话存储一个不同的随机整数。
有关MySQL RAND(n)
功能如何工作的更多信息,请参阅docs。