/**
* Random_Posts widget class
*
* @since 2.8.0
*
* Reedited by 3qsami
* Reference:http://bo.moioi.com/2011/worpdpress-random-posts-widget-without-plugin/
*/
/**
* Widget Name: 随机文章 小工具
* Description: 这是一个显示随机文章的小工具(widget),可以设置随机文章的数量,指定文章分类目录。
*/
function Random_posts($args = ''){
$default = array('showPosts'=>10,
'cat'=>'0',
'class'=>'randomPosts');
$r = wp_parse_args($args,$default);
extract($r);
$rand_query = new WP_Query("cat=$cat&showposts=$showPosts&orderby=rand");
if($rand_query->have_posts()){
echo '
';
while($rand_query->have_posts()){
$rand_query->the_post();
echo '- '.get_the_title().'
';
}/*End while($rand_query->have_posts())*/
echo '
';
}/*End if($rand_query->have_posts())*/
}
/**
* 定义一个显示随机文章的小工具(widget),以便在控制面板在小工具中进行管理
* 该类必须是WP_Widget在扩展类
* wordpress v2.8 之后可用
*/
class Random_Posts extends WP_Widget{
/**
* 构造函数
* 声明一个数组$widget_ops,用来保存类名和描述,以便在控制面板正确显示工具信息
* $control_ops 是可选参数,用来定义小工具在控制面板显示的宽度和高度
* 最后是关键的一步,调用WP_Widget来初始化我们的小工具
*/
function Random_Posts() {
$widget_ops = array('classname' => 'widget_random_posts', 'description' => __( '随机显示博客中的文章') );
$control_ops = array('width'=>200,'height'=>300);
$this->WP_Widget(false,'随机文章',$widget_ops,$control_ops);
}
/**
* 定义widget函数,用于在网页中显示
*/
function widget($args,$instance){
extract($args);
$title = apply_filters('widget_title',empty($instance['title']) ? ' ' : $instance['title']);
$showPosts = empty($instance['showPosts']) ? 10 : $instance['showPosts'];
$cat = empty($instance['cat']) ? 0 : $instance['cat'];
$class = empty($instance['class']) ? 'Random_posts' : $instance['class'];
echo $before_widget;
echo $before_title . $title . $after_title;
Random_posts("showPosts=$showPosts&cat='$cat'&class='$class'");
echo $after_widget;
}
/**
* 定义update函数,保存设置
*/
function update($new_instance,$old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
$instance['showPosts'] = strip_tags(stripslashes($new_instance['showPosts']));
$instance['cat'] = strip_tags(stripslashes($new_instance['cat']));
$instance['class'] = strip_tags(stripslashes($new_instance['class']));
return $instance;
}
/**
* 定义form函数
* 用来显示小工具在控制面板的选项
* 这个随机文章小工具可以让用户自定义4个内容:
* 模块标题,默认为“随机文章”
* 显示文章数量,默认为10篇
* 分类目录ID,默认为0,即显示所有分类下的文章
* CSS样式class名,默认为Random_posts
*/
function form($instance){
$instance = wp_parse_args((array)$instance,array('title'=>'随机文章','showPosts'=>10,'cat'=>0,'class'=>'Random_posts'));
$title = htmlspecialchars($instance['title']);
$showPosts = htmlspecialchars($instance['showPosts']);
$cat = htmlspecialchars($instance['cat']);
$class = htmlspecialchars($instance['class']);
echo '';
echo '';
echo '';
echo '';
}
} // RandomPostsWidget 类定义结束