随便看看顾名思义就是随机给出文章看看,就是本博客菜单栏上的随便看看的功能。很小但很实用。
已封装为插件,进入WordPress后台安装插件,搜索:Random Look
插件GitHub地址:https://github.com/sy-records/random-look
原理:
- 随机在博客中抽取一篇文章来访问。
操作方法:
- 将以下代码加入到主题目录中的“functions.php”文件的 ?> 之前即可。
// 添加随便看看
function random_postlite() {
global $wpdb;
$query = "SELECT ID FROM $wpdb->posts WHERE post_type = 'post' AND post_password = '' AND post_status = 'publish' ORDER BY RAND() LIMIT 1";
if ( isset( $_GET['random_cat_id'] ) ) {
$random_cat_id = (int) $_GET['random_cat_id'];
$query = "SELECT DISTINCT ID FROM $wpdb->posts AS p INNER JOIN $wpdb->term_relationships AS tr ON (p.ID = tr.object_id AND tr.term_taxonomy_id = $random_cat_id) INNER JOIN $wpdb->term_taxonomy AS tt ON(tr.term_taxonomy_id = tt.term_taxonomy_id AND taxonomy = 'category') WHERE post_type = 'post' AND post_password = '' AND post_status = 'publish' ORDER BY RAND() LIMIT 1";
}
if ( isset( $_GET['random_post_type'] ) ) {
$post_type = preg_replace( '|[^a-z]|i', '', $_GET['random_post_type'] );
$query = "SELECT ID FROM $wpdb->posts WHERE post_type = '$post_type' AND post_password = '' AND post_status = 'publish' ORDER BY RAND() LIMIT 1";
}
$random_id = $wpdb->get_var( $query );
wp_redirect( get_permalink( $random_id ) );
exit;
}
if ( isset( $_GET['random'] ) )
add_action( 'template_redirect', 'random_postlite' );
使用方法:
- 访问你网站的域名
/?random
即可看到效果 - 如果要在导航菜单显示的话,在后台新建一个自定义URL菜单即可。
可以指定多个ID吗?
应该如何修改代码呀?试了不成功
@欧维 random_cat_id 这里改成in
和用页面模板的实现方式不一样,这个更方便。请教一下:
如果想给显示的文章加入一定的限制条件,1文章发布于多少天以内、2某一些分类
该怎么加入过滤条件呢?
@FEILIWUYAN 修改where条件
@沈唁 回复的真快~
改分类的条件没成功……看来是没改对