Forums

The forums ran from 2008-2020 and are now closed and viewable here as an archive.

Home Forums Back End How to make a multi-peer PHP array based on WP cat heirachy? Re: How to make a multi-peer PHP array based on WP cat heirachy?

#66566

You can use a custom walker to achieve this. It’s a fairly advanced topic but i’ll "walk" you through it :roll:

Start by creating a class for your walker either in functions.php in your theme, or wherever you like. You can use this as a template.

Code:
class CategoryNavigationWalker extends Walker {
var $db_fields = array(‘parent’ => ‘parent’, ‘id’ => ‘term_id’);

function start_lvl(&$output, $depth) {
$output .= “

    n”;
    }

    function end_lvl(&$output, $depth) {
    $output .= “

n”;
}

function start_el(&$output, $category, $depth, $args = null) {
$output .= “

  • {$category->name}”;
    }

    function end_el(&$output, $category, $depth, $args = null) {
    $output .= “

  • “;
    }
    }

    This example creates an unordered list, but you can change it to accommodate ordered lists, divs, drop down menus, whatever you fancy. I have just listed the categories but for a navigation you will obviously need to include hyperlinks.

    Next a function that uses the walker to produce the navigation menu.

    Code:
    function category_navigation() {
    $walker = new CategoryNavigationWalker();
    echo $walker->walk(get_categories(), 0);
    }

    Finally, when you want to produce the navigation menu in your template use:

    Code:

    Hope that is easy to understand and solves your problem.

    Dave