wordpress功能集成(三):基礎知識-wordpress過濾器

前一篇文章已經將了wordrpess鉤子,過濾器和一樣重要,也是插件開發的一個重要接口,過濾器原理跟鉤子差不過,只不過功能不同,「動做鉤子」我以前面加個動做,是由於過濾器其實也叫"過濾器鉤子"(filter hooks)。動做鉤子功能更多的偏向於執行一系列函數,而過濾器的功能是用來在輸出一個變量給你一次修改它的機會。 php

與動做鉤子相對應,過濾器基本函數也有兩個:apply_filters()\add_filter,這些個函數都位於wp-include/plugin.php文件中。 app

  1. <?php      
  2.     apply_filters($tag,$value);      
  3.     //$tag  必需、你想建立的過濾器的名稱      
  4.     //$value 必需,掛在這個過濾器能夠修改的值(參數)      
  5.     //這兩個參數是必須的,後面還能夠帶參數可道官網查看      
  6. ?>    
  1. <?php      
  2.     add_filter($tag,$function_to_add,$priority,$accepted_args);      
  3.     //$tag 必需,鉤子名      
  4.     //$function 必需,調用的函數      
  5.     //優先級      
  6.     //接受參數數量,默認1      
  7.     //須要注意的是,用add_filter添加的過濾器必需要有個返回值      
  8. ?>    

apply_filters()函數也是建立並執行一個過濾器,和動做的參數同樣,不過它的兩個參數都是必需的,由於過濾器的功能是改變變量的值,因此必需傳遞一個或多個變量。add_filter()往鉤子上面掛函數,這些函數必需有個返回值,若是給你修改個參數,而後改沒了那是要報錯的。
也就是說一個變量若是提供了修改過濾器,那麼在輸出以前,你能夠經過函數再修改它N次。這個最多見的應用應該是seo插件了,經過過濾器來修改頁面的信息。
這裏再經過一個簡單的實例來講明過濾器,之後的教程中再提供幾個實例應用。
好吧,那咱們也來修改一下網站的title信息。輸出title通常都使用了函數wp_title();這個函數位於wp-includes/general-template.php文件第528行。咱們查看函數,前面那一大截都是些判斷,用來判斷當前是什麼頁面,當前頁面標題是什麼。看到609行有代碼: 函數

  1. $title = apply_filters('wp_title', $title$sep$seplocation);  

而後這一句的後面就是判斷要不要輸出了。這裏建立並執行了一個名爲wp_title的過濾器,而後傳遞3個參數,$titile就是標題,$sep就是標題的前面或後面截個字符,好比「|」,$seplocation決定字符$sep(「|」)顯示在標題左邊仍是標題右邊。這裏apply_filers雖然傳遞了3個參數,可是注意了,主要的是修改$titile這個變量,後面兩個是附加提供的參數,通常讓你修改的時候還可使用那兩個參數,雖然他傳遞了3個參數,可是咱們的返回值只能是一個,問?函數能返回3個值嗎? 網站

下面往主題functions.php文件中添加下面代碼來修改$titile信息 spa

  1. add_filter('wp_title','custom_title',10,3);   
  2. function custom_title($title,$a,$b){   
  3.     if$b === 'right' ){   
  4.         $title = '阿樹工做室'.$a;   
  5.     }else{   
  6.         $title = $b.'阿樹工做室';   
  7.     }   
  8.     return $title;   
  9. }  

ok咧。就這樣,就成功修改了title值,這一篇可能只有一個實例,也許講的不夠細,若是有地方有疑問,你能夠查看前一篇,應爲動做鉤子和過濾器鉤子不少地方都同樣。
過濾器鉤子也有其它函數,例如:has_filter() current_filter() merge_filters() remove_filter() remove_all_filters()...要想繼續深刻,仍是去官網查看 插件

相關文章
相關標籤/搜索