实现WordPress随机重定向到任意文章的功能(2)
2、使用wp-query()实现重定向
// page-random.php源代码(通过WP_Query实现)
//随机重定向页面模板
// 为WP_Query()设置参数
$args = array(
'posts_per_page' => 1,
'orderby' =>'rand'
);
//从数据库中随机选择一篇文章
$my_random_post = new WP_Query ($args );
// 通过WP_Query处理数据库请求
while ( $my_random_post->have_posts ()) {
$my_random_post->the_post ();
// 将用户重定向到随机文章
wp_redirect ( get_permalink ());
exit;
}
使用WP_Query的最大的好处是,它比比get_posts()函数拥有更多的参数,当你建立特定查询的时候,可以提供更大的灵活性。
下面举几个实例:
我们可以让WordPress的重定向到某个分类下的文章,比如我们重定向到萝卜居家园网下面的“html模板”这个分类下面的任意文章:
// 为WP_Query()设置参数
$args = array(
'category_name' => 'htmlmuban', //记住,使用分类别名。
'posts_per_page' => 1,
'orderby' => 'rand'
);
//从数据库中随机选择一篇文章
$my_random_post = new WP_Query ( $args );
//通过WP_Query处理数据库请求
while ( $my_random_post->have_posts () ) {
$my_random_post->the_post ();
//将用户重定向到随机文章
wp_redirect ( get_permalink());
exit;
}
如果我们要排除“html模板”这个分类,重定向到其余的所有分类下面的任意文章咧?怎么实现:
//为WP_Query()设置参数
$args = array(
'category__not_in' => array(1), // 这里是要排除的分类id,比如html模板这个分类的id为1,在这里我们排除他
'posts_per_page' => 1,
'orderby' =>'rand'
);
//从数据库中随机选择一篇文章
$my_random_post = new WP_Query ( $args );
//通过WP_Query处理数据库请求
while ( $my_random_post->have_posts ()) {
$my_random_post->the_post ();
//将用户重定向到随机文章
wp_redirect (get_permalink () );
exit;
}
从这些例子中,你可以看到,没有复杂的,也没有什么太先进,我们可以用短短的几行代码实现WordPress随机重定向到任意文章的功能。你也可以通过上面的方式扩展出更多的用途来。