Wordpress自定义侧边栏小工具实例分享
前两天做了个教程,关于 Wordpress自定义侧边栏小工具 ,今儿把教程中的示例分享出来,有需要可以自取!
注:代码有一点小出入,可以理解!
小工具后台设置:

小工具前台效果:

完整代码如下:
<?php
/**
* 功能:调用某分类下的文章列表
* 调用:在主题functions.php文件里引入本文件
**/
class yang_cat_post_list extends WP_Widget {
function yang_cat_post_list(){
$widget_des = array('description' => '调用某分类下的文章列表');
parent::WP_Widget('yang_cat_post_list',$name='Yang-分类文章调用',$widget_des);
//parent::直接使用父类中的方法
//$name 这个小工具的名称,
//$widget_ops 可以给小工具进行描述等等。
//$control_ops 可以对小工具进行简单的样式定义等等。
}
//小工具的选项设置表单
function form($instance){
//title:模块标题,title_en:英文标题,showPosts:显示文章数量,cat:分类目录ID
$instance = wp_parse_args((array)$instance,array('title'=>'分类文章','title_en'=>'Title','showPosts'=>10,'cat'=>0));//默认值
$title = htmlspecialchars($instance['title']);
$title_en = htmlspecialchars($instance['title_en']);
$showPosts = htmlspecialchars($instance['showPosts']);
$cat = htmlspecialchars($instance['cat']);
echo '<p style="text-align:left;"><label for="'.$this->get_field_name('title').'">标题:<input style="width:200px;" id="'.$this->get_field_id('title').'" name="'.$this->get_field_name('title').'" type="text" value="'.$title.'" /></label></p>';
echo '<p style="text-align:left;"><label for="'.$this->get_field_name('title_en').'">英文标题:<input style="width:200px;" id="'.$this->get_field_id('title_en').'" name="'.$this->get_field_name('title_en').'" type="text" value="'.$title_en.'" /></label></p>';
echo '<p style="text-align:left;"><label for="'.$this->get_field_name('showPosts').'">文章数量:<input style="width:200px;" id="'.$this->get_field_id('showPosts').'" name="'.$this->get_field_name('showPosts').'" type="text" value="'.$showPosts.'" /></label></p>';
echo '<p style="text-align:left;"><label for="'.$this->get_field_name('cat').'">分类ID:<input style="width:200px" id="'.$this->get_field_id('cat').'" name="'.$this->get_field_name('cat').'" type="text" value="'.$cat.'" /></label></p>';
}
//更新保存 小工具表单数据
function update($new_instance,$old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
$instance['title_en'] = strip_tags(stripslashes($new_instance['title_en']));
$instance['showPosts'] = strip_tags(stripslashes($new_instance['showPosts']));
$instance['cat'] = strip_tags(stripslashes($new_instance['cat']));
return $instance;
}
//文章随机显示
function the_rand_posts($args = ''){
$default = array('showPosts'=>10, 'cat'=>'0');
$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 '<ul>';
while($rand_query->have_posts()){
$rand_query->the_post();
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
}
echo '</ul>';
}
}
//小工具在前台显示效果
function widget($args, $instance){
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? __('分类文章<i>Title</i>','yang') : $instance['title']);//小工具前台标题
$title = $title . '<i>'.$instance['title_en'].'</i>';
$showPosts = empty($instance['showPosts']) ? 10 : $instance['showPosts'];
$cat = empty($instance['cat']) ? 0 : $instance['cat'];
echo $before_widget;
if( $title ) echo $before_title . $title . $after_title;
self::the_rand_posts("showPosts=$showPosts&cat='$cat'");
echo $after_widget;
}
}
//激活小工具
register_widget('yang_cat_post_list');
至此结束,感觉怎么样?欢迎发表你的意见!评论传送门