From 5aaf5ac0ad292a7f768ecbf4b2ab6f0b2302db12 Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 23 Dec 2008 12:52:37 +0000 Subject: [PATCH] Allow overriding cat walker. Props AaronCampbell. fixes #8682 for trunk git-svn-id: http://svn.automattic.com/wordpress/trunk@10246 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/template.php | 6 ++++-- wp-includes/category-template.php | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php index 74d25ea2a..1c9203ac4 100644 --- a/wp-admin/includes/template.php +++ b/wp-admin/includes/template.php @@ -439,8 +439,10 @@ class Walker_Category_Checklist extends Walker { * @param unknown_type $selected_cats * @param unknown_type $popular_cats */ -function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false ) { - $walker = new Walker_Category_Checklist; +function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null ) { + if ( empty($walker) || !is_a($walker, 'Walker') ) + $walker = new Walker_Category_Checklist; + $descendants_and_self = (int) $descendants_and_self; $args = array(); diff --git a/wp-includes/category-template.php b/wp-includes/category-template.php index e3c1b466b..fb8e45def 100644 --- a/wp-includes/category-template.php +++ b/wp-includes/category-template.php @@ -719,8 +719,13 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { * @see Walker_Category::walk() for parameters and return description. */ function walk_category_tree() { - $walker = new Walker_Category; $args = func_get_args(); + // the user's options are the third parameter + if ( empty($args[2]['walker']) || !is_a($args[2]['walker'], 'Walker') ) + $walker = new Walker_Category; + else + $walker = $args[2]['walker']; + return call_user_func_array(array( &$walker, 'walk' ), $args ); } @@ -732,8 +737,13 @@ function walk_category_tree() { * @see Walker_CategoryDropdown::walk() for parameters and return description. */ function walk_category_dropdown_tree() { - $walker = new Walker_CategoryDropdown; $args = func_get_args(); + // the user's options are the third parameter + if ( empty($args[2]['walker']) || !is_a($args[2]['walker'], 'Walker') ) + $walker = new Walker_CategoryDropdown; + else + $walker = $args[2]['walker']; + return call_user_func_array(array( &$walker, 'walk' ), $args ); }