久青草国产观看在线视频,在线观看欧美日女,777毛片,亚洲国产精品99久久久久久久

WordPress自定義側邊欄小工具

2018-09-22 wordpress經驗
  • 文章介紹
  • 快速入門
  • 評價&建議

WordPress主題小工具,可以自由拖動到側邊欄,并在前臺實現相應功能!但主題自帶的小工具一般不能滿足我們更強大的需求,怎樣,跟著看看怎么自定義側邊欄小工具!

我們先來了解一些個概念性的東西,不想了解可直接跳過,無妨對后面的小工具制作的理解!WordPress提供了一個WP_Widget類,我們只需要擴展WP_Widget類,就可以制作自己的小工具(widget),此類文件位于 wp-includeswidgets.php,無聊的可以扒來看看!

下面結合實例來說一下小工具的制作流程,實例小工具的功能是實現調用指定分類的文章!下面正式開始:

新建一個文件 cat_posts.php,并在主題 Functions.php 里引入此文件!cat_posts.php 主要包含以下幾個部分:

1、自定義擴展類

首先定義一個 WP_Widget 的擴展類,類名隨意但不得與其它類名沖突,比如 catPostsWidget,同時構造函數。

class catPostsWidget extends WP_Widget {
 /*
  ** 聲明一個數組$widget_ops,用來保存類名和描述,以便在主題控制面板正確顯示小工具信息
  ** $control_ops 是可選參數,用來定義小工具在控制面板顯示的寬度和高度
  ** 最后是關鍵的一步,調用WP_Widget來初始化我們的小工具
  **/
 function catPostsWidget(){
  $widget_ops = array(‘classname’=>’widget_random_posts’,’description’=>’隨機顯示你博客中的文章’);
  $control_ops = array(‘width’=>250,’height’=>300);
  $this->WP_Widget(false, ‘分類文章調用’, $widget_ops, $control_ops);
 }
}

注:構造函數 catPostsWidget() 中定義了兩個數組變量$widget_ops和$control_pos,傳遞給$this->WP_Widget()進行小工具的初始化。

WP_Widget參數詳解:

第一個參數是$id_base,我們一般設置成false即可,也可以使用小工具的名字,如 ‘catPostsWidget’;

第二個參數指定小工具顯示的名稱;

第三個參數指定類名和小工具的描述,這兩個參數結合在一起的效果如下

第四個參數定義小工具的寬度和高度,一般只需要前三個參數即可,它影響的效果是當你把小工具拖到側邊欄時的寬度和高度。

2、擴展類的三個重要函數

小工具擴展類需要定義的三個重要函數:form()update()widget()

form()函數一般是用來顯示小工具的選項設置表單,表單的內容根據需要自己定義,示例小工具定義了4個選項可供設置:

title:模塊標題,可設默認值,如“分類文章”;

title_en:英文標題,可設默認值,如“Title”;

num:顯示文章數量,可設默認值,如 10;

cat:分類目錄ID,,可設默認值,如0,即顯示所有分類下的文章

后臺顯示效果:

WordPress自定義側邊欄小工具

form() 函數代碼:

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>’;
}

設置表單中$instance數組的4個key:title、title_en、showPosts、cat(key名可自由定義),然后由 WordPress 的函數 get_field_name 和 get_field_id 將表單中的設置項都保存到相應的數組Key中。

update()函數用于更新保存由 form() 表單傳遞來的設置項數據。

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;
}

注:此函數也可省略不定義,默認返回的將是 $new_instance,也就是說在小工具選項中所做的更改同樣能得到保存,但為了保證表單中數據的安全性,我們可以定義一下,并可使用php函數 strip_tags 和 stripslashes 來過濾掉輸入的不合法的字符。

widget() 函數定義小工具在前臺頁面中的顯示樣式

function widget($args, $instance){
 extract($args);
 $title = apply_filters(‘widget_title’, empty($instance[‘title’]) ? __(‘分類文章Title’,’yang’) : $instance[‘title’]);//小工具前臺標題
 $title = $title . ”.$instance[‘title_en’].”;
 $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;  $query = new WP_Query(“cat=$cat&showposts=$showPosts&orderby=rand”);
 if($query->have_posts()){
  echo ‘<ul>’;
  while($query->have_posts()){
   $query->the_post();
   echo ‘<li><a href=”‘.get_permalink().'”>’.get_the_title().'</a></li>’;
  }
  echo ‘</ul>’;
 }  echo $after_widget;
}

先使用了extract函數把數組中的keys轉換成變量,然后從$instance中取出保存的各個key的值,再輸出一下文章列表樣式即可。

前端效果圖如下:

WordPress自定義側邊欄小工具

注冊小工具

到此,自定義小工具類 catPostsWidget 已經定義完成,最后我們還需要一步:注冊小工具類,以完成對小工具的激活。

register_widget(‘catPostsWidget’);

注:激活代碼要放在類定義之外。

好了,如此完整,你還不趕緊自定義一個!!

1 0

企業建站推薦正版商業主題,國內專業團隊開發,完善售后,是您不二選擇。

正版主題商店

主題貓WP建站,累計幫助1300+客戶成功建站,為站長提供支持!

立刻開啟你的建站之旅
QQ在線客服

服務熱線

wordpress建站咨詢