WordPress Custom Walker

Lớp WordPress Walker giúp phân tích cú pháp kết quả được định dạng được tạo bởi các hàm như wp_nav_menu (), wp_list_categories (). WordPress cho phép tạo lớp walker tùy chỉnh để thực hiện các thay đổi với kết quả được định dạng này.

Trong hướng dẫn này, chúng ta sẽ xem cách thực hiện các thay đổi trong danh sách danh mục được hiển thị bởi wp_list_categories (). Chúng tôi đang tạo một walker tùy chỉnh và gửi phiên bản của nó dưới dạng đối số wp_list_categories ().

Sử dụng điều này, chúng tôi có thể xem qua các danh mục được định dạng và thêm các phong cách của riêng chúng tôi.

Danh sách danh mục WordPress

Trong hướng dẫn trước, chúng ta đã biết cách hiển thị danh sách các danh mục bằng cách sử dụng hàm wp_list_categories () của WordPress. Đoạn mã sau gọi hàm này bằng cách chỉ định cá thể walker tùy chỉnh làm đối số của nó.
$args = array("walker"=>new CustomWalker()) 
wp_list_categories($args);

Người đi theo danh mục tùy chỉnh

Mã hiển thị lớp người đi bộ danh mục tùy chỉnh mở rộng WordPress Walker_Category.
class CustomWalker extends Walker_Category { 
function start_el(&$output, $item, $depth=0, $args=array()) { 
$output .= "\n<li class='list-element'>".esc_attr($item->name); 
} 
function end_el(&$output, $item, $depth=0, $args=array()) { 
$output .= "</li>\n"; 
} 
}
Lớp này chứa hai hàm start_el () và end_el () sẽ được gọi lần lượt là bắt đầu của phần tử danh sách và kết thúc của phần tử danh sách. Trong start_el (), chúng ta đang thêm một thuộc tính class để thêm kiểu riêng của chúng ta vào danh sách thể loại.

Chức năng người đi bộ khác

Có hai chức năng khác mà chúng ta có thể sử dụng trong khung tập đi. Đây là, start_lvl () và end_lvl () để thực hiện các thay đổi trong <ul> ở mỗi cấp. Nhưng điều này sẽ không áp dụng cho thẻ <ul> bên ngoài bao gồm tất cả các danh mục gốc ở độ sâu 0. Vì vậy, lớp walker tùy chỉnh có thể có,
class CustomWalker extends Walker_Category {
		function start_lvl(&$output, $depth=1, $args=array()) {  
			$output .= "\n<ul class=\"level-element\">\n";  
		}  
		function end_lvl(&$output, $depth=0, $args=array()) {  
			$output .= "</ul>\n";  
		}  
		function start_el(&$output, $item, $depth=0, $args=array()) {  
			$output .= "\n<li class='list-element'>".esc_attr($item->name);
		}  
		function end_el(&$output, $item, $depth=0, $args=array()) {  
			$output .= "</li>\n";  
		}  
	}