Walker的作用
walker类囊括了用以输出HTML的必要基本函数,所输出的HTML需代表树形结构的WordPress对象。例如页面和分类目录就是WordPress 2.2利用walker类列举出的两种对象类型。你可以用right func和WordPress循环来随意显示分类目录,但以适当的形式在父分类目录下显示子分类目录却是相当耗时耗力。不过就这方面而言,Walker类可以帮你解决大部分问题。
方法和属性
注意:Walker类的属性都可以由扩展类进行设置,并且通常不会因为实例的周期而产生变化。
此外start_el, end_el, start_lvl, end_lvl的方法定义只列出了一个参数,但可由call_user_func_array调用,因此列出的是call_user_func_array的参数。
属性
$tree_type
在WordPress 2.2发布版中,扩展Walker的类将该属性设为'category' 或'page'。代码对该属性值不起作用。
$db_fields
关键字为parent与id的数组。关键字的值应为对象中属性的名称。Walker类将被用于分别保留当前对象ID和父对象的ID。
示例
class Walker_Page extends Walker {
var $tree_type = 'page';
var $db_fields = array ('parent' =>
'post_parent', 'id' => 'ID');
Walker_Page类(WordPress 2.2的一部分)认为,如果$page是一个页面对象,那么page->post_parent将会给出该页面的父页面的ID,而page->ID则会给出该页面的ID。
方法
walk($elements, $to_depth)
获取所请求的元素数组,使子页面显示在相应的父页面和一个整数 $to_depth下。非零的 $to_depth可覆盖该方法下降的最大值。如果 $to_depth为-1,程序处理数组时会将其看做一个平面数组(各个元素之间没有父子层级关系)。传递给walk的所有附加参数都会原封不动地被传递给walk调用的其它方法。
walk遍历$element数组。一旦发现某个元素是前一个元素的子级,walk就会调用start_lvl。有元素被处理时,walk会先调用start_el 然后调用end_el。一旦有元素脱离其父级,walk会调用end_lvl。
start_el($output, $element, $depth, [optional args])
walker的扩展类可定义该方法,使之返回与开始元素标记相连接的$output。
end_el($output, $element, $depth, [optional args])
walker的扩展类可定义该方法,使之返回与结束元素标记相连接的$output。注意:直到元素的所有子级都被添加完毕,元素才能结束。
start_lvl($output, $depth, [optional args])
walker的扩展类可定义该方法,使之返回与先于所有子级元素的标记相连接的$output。例如该方法经常输出一个ul标签或ol标签。
end_lvl($output, $depth, [optional args])
walker的扩展类可定义该方法,使之返回与所有结束子级元素的标签相连接的$output。例如该方法经常结束一个ul标签或ol标签。
分类:中文手册