我自己找到了答案。幸运的是,我已经设置了很多需求,只需将它们拼接在一起即可。我正在使用自定义导航助行器start_el
函数传入$item
包含object
属性,告诉您导航项是什么(即页面、自定义链接或在我们的情况下是类别)。我能够使用此信息以及我创建的用于生成类别URL的自定义函数来获得我想要的结果:
My_Nav_Walker.php
class My_Nav_Walker extends Walker_Nav_Menu {
/* ... */
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
/* ... */
$attributes = !empty($item->attr_title) ? \' title="\' . esc_attr($item->attr_title) . \'"\' : \'\';
$url = $item->url;
if($item->object == "category") {
$category = get_category($item->object_id);
$url = get_category_url($category->slug);
}
$attributes .= !empty($url) ? \' href="\' . esc_attr($url) . \'"\' : \'\';
/* ... */
}
/* ... */
}
Custom Category URL Function
function get_category_url($category_slug) {
return get_post_type_archive_link( \'post\' ) . \'?category=\' . $category;
}