【发布时间】:2016-04-01 09:55:42
【问题描述】:
我有一个带有页面导航编号的自定义 wordpress 搜索页面,我的客户要求我在第 1 页随机产品而不是其他产品,但主页上随机显示的所有产品不应显示在其他页面上。
对于查询我有这个代码:
$args = array(
'post_type' => 'products',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 )
)
对于随机:
if( $args['paged'] == 1) {
$args['orderby'] = 'rand';
} else {
$args['order'] = 'DESC':
}
当我搜索时结果就在那里,而且首页随机性很好,但是由于随机性已经显示在主页上的一些产品也显示在其他页面上(例如:第 2 页)。
目的不是展示已经在首页展示的产品。
我已经做了类似的事情:
if( $page == 1 ) shuffle($r->posts);
但它只打乱第 1 页上的 10 个产品,其他页面上的其他产品从不显示在第 1 页上。
经过一番思考,我认为将前 10 个随机产品存储到 cookie 或会话中,并为其他页面执行 NOT IN?像这样?
if( $args['paged'] == 1 ){
$args['orderby'] = 'rand';
$r = new Wp_Query($args);
$randomFirstPage = wp_list_pluck( $r->posts, 'ID' );
print_r($randomFirstPage);
setcookie( 'firstPageResults', $randomFirstPage, time()+3600, '/', 'mydomain.com/dev' );
}else{
$not_in = $_COOKIE['firstPageResults'];
$args['NOT IN'] = $not_in;
$r = new Wp_Query($args);
}
抱歉英语不好,你能帮帮我吗?
谢谢
【问题讨论】:
标签: php wordpress search random