使用查询字符串将类别页面重定向到博客页面

时间:2018-09-07 作者:Quangdao Nguyen

我使用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;
}

结束

相关推荐

Dropdown menu for categories

当我使用下面的代码时<?php wp_nav_menu( array(\'menu\' => \'categories\' )); ?> 我可以创建一个新的菜单来列出我创建的wordpress中的所有类别。我用它在页面中间列出所有类别。我现在的问题是:有没有一种简单的方法可以为存在的每个子类别创建下拉菜单?那么,当我点击一个特定的类别时,它的子类别会显示出来吗?