add_filter()
是伴侶功能apply_filters()
。在某個過濾器(add_filter()
中的參數$tag
)運行apply_filters
之前,可以使用add_filter
爲標記註冊過濾器。當使用該標籤名執行apply_filters()
時,它會按順序調用所有已註冊的過濾器。過濾器用於通過函數傳遞數據進行操作。例如,我經常發現自己使用的是wp_list_pages過濾器。我用它從頁面列表中刪除換行符。因此,這裏的工作原理是:
首先,我定義一個函數,它接受一個參數,並與它的工作後返回它:
function my_list_pages_filter($pages){
$pages = preg_replace(array("\n","\r"), '', $pages);
return $pages;
}
然後,添加過濾器鉤: 的add_filter(「wp_list_pages」,「my_list_pages_filter ');
add_filter
告訴WordPress「當函數apply_filters
被調用時,第一個參數爲'wp_list_pages',請致電my_list_pages_filter
。」過濾器必須至少發送一個值(任何類型:字符串,數組,整數等),並且他們期望函數返回一個值。
它們爲您提供了一種在發回之前處理輸入的方法。
do_action
是一個完全不同的鉤子。爲了將信息發送到您的過濾功能,請執行以下操作(從你的例子所):
<div id="content" <?php $class='post post_content'; echo apply_filters('my_custom_classes', $class); ?>>
然後在你的函數。php文件,加上:
add_filter('my_custom_classes','my_custom_classes_function');
function my_custom_classes_function($classes){
$output 'class="'. $classes.'"';
return $output;
}
這是一個非常基本的過濾器使用,但它是一個開始。你真的可以得到的,你可以通過過濾器做什麼用的一些增強功能相同的例子一個想法:
function my_custom_classes_function($classes){
$classes = explode(' ', $classes);
if(is_home())
$classes[] = 'home_content';
if(is_single())
$classes[] = 'single_content';
if(is_page())
$classes[] = 'page_content';
if(is_tag())
$classes[] = 'tag_content';
$output 'class="'. implode(' ', $classes) .'"';
return $output;
}
我認爲,如果您已經無法理解過濾器和操作,那麼tut只會更混亂。你能解釋一下你試圖使用它們的上下文嗎?然後,我們可以更具體地回答您的需求,而不僅僅是重複食典。 – TheDeadMedic 2010-06-06 12:11:37