前一篇文章已經將了wordrpess鉤子,過濾器和一樣重要,也是插件開發的一個重要接口,過濾器原理跟鉤子差不過,只不過功能不同,「動做鉤子」我以前面加個動做,是由於過濾器其實也叫"過濾器鉤子"(filter hooks)。動做鉤子功能更多的偏向於執行一系列函數,而過濾器的功能是用來在輸出一個變量給你一次修改它的機會。 php
與動做鉤子相對應,過濾器基本函數也有兩個:apply_filters()\add_filter,這些個函數都位於wp-include/plugin.php文件中。 app
apply_filters()函數也是建立並執行一個過濾器,和動做的參數同樣,不過它的兩個參數都是必需的,由於過濾器的功能是改變變量的值,因此必需傳遞一個或多個變量。add_filter()往鉤子上面掛函數,這些函數必需有個返回值,若是給你修改個參數,而後改沒了那是要報錯的。
也就是說一個變量若是提供了修改過濾器,那麼在輸出以前,你能夠經過函數再修改它N次。這個最多見的應用應該是seo插件了,經過過濾器來修改頁面的信息。
這裏再經過一個簡單的實例來講明過濾器,之後的教程中再提供幾個實例應用。
好吧,那咱們也來修改一下網站的title信息。輸出title通常都使用了函數wp_title();這個函數位於wp-includes/general-template.php文件第528行。咱們查看函數,前面那一大截都是些判斷,用來判斷當前是什麼頁面,當前頁面標題是什麼。看到609行有代碼: 函數
而後這一句的後面就是判斷要不要輸出了。這裏建立並執行了一個名爲wp_title的過濾器,而後傳遞3個參數,$titile就是標題,$sep就是標題的前面或後面截個字符,好比「|」,$seplocation決定字符$sep(「|」)顯示在標題左邊仍是標題右邊。這裏apply_filers雖然傳遞了3個參數,可是注意了,主要的是修改$titile這個變量,後面兩個是附加提供的參數,通常讓你修改的時候還可使用那兩個參數,雖然他傳遞了3個參數,可是咱們的返回值只能是一個,問?函數能返回3個值嗎? 網站
下面往主題functions.php文件中添加下面代碼來修改$titile信息 spa
ok咧。就這樣,就成功修改了title值,這一篇可能只有一個實例,也許講的不夠細,若是有地方有疑問,你能夠查看前一篇,應爲動做鉤子和過濾器鉤子不少地方都同樣。
過濾器鉤子也有其它函數,例如:has_filter() current_filter() merge_filters() remove_filter() remove_all_filters()...要想繼續深刻,仍是去官網查看 插件