我使用ajax来过滤、搜索和列出博客页面上的所有博客文章,而不是为我正在处理的网站使用类别列表模板。但是,我需要将所有类别添加到导航中,当我这样做时,链接将如预期的那样成为该类别的默认存档页面(即。/category/my-category
). 有没有办法通过包含类别slug(即。/blog/?category=my-category
)? 还是有更好的解决方案允许用户通过菜单管理员向菜单添加类别?
使用查询字符串将类别页面重定向到博客页面
1 个回复
最合适的回答,由SO网友:Quangdao Nguyen 整理而成
我自己找到了答案。幸运的是,我已经设置了很多需求,只需将它们拼接在一起即可。我正在使用自定义导航助行器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;
}
结束