/** * 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 ''; }/*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 类定义结束