常用函数-Walker类

0条评论

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标签。