自定义分类导航,是否具有子项的当前菜单项?

时间:2014-08-18 作者:user4630

如果您的帖子在该类别/自定义税范围内,是否可以使用添加了活动/当前菜单类的自定义分类导航?

e、 你有一个自定义的分类法叫做。。。天气在这里面,你有阳光,有风,有雨。

无论何时您出现在一个阳光灿烂的页面上,无论是自定义分类法的存档,还是单个分类法。php或最重要的子帖子在sunny页面中,sunny按钮突出显示?

如果echo处于活动状态,是否只有手动列出然后应用类别的方法?

我尝试添加一个自定义菜单,并通过管理员添加,但它只是有通常的菜单项,它没有表明有孩子或任何东西。

不确定这是否可行。

1 个回复
最合适的回答,由SO网友:mrwweb 整理而成

我相信你所希望的行为不是WordPress核心的一部分。上次我需要它时,我从用于改进帖子类型突出显示的帖子类型归档链接插件中改编了几个函数。要使用它,只需以常规方式添加菜单项,并将这些功能放入插件或主题中。

// Get menus to play nicely with the submenu script
// blissfully borrowed from Post Type Archive Links plugin, thanks @stephenharris, @F J Kaiser, @ryancurban
function mrw_tax_archive_current( $items ) {
    foreach ( $items as $item ) {
        if ( \'taxonomy\' !== $item->type )
            continue;

        global $post;

        if( !$post )
            continue;

        $taxonomy = $item->object;
        $taxonomy_term = $item->object_id;
        if (
            ! is_tax( $taxonomy, $taxonomy_term )
            AND ! has_term( $taxonomy_term, $taxonomy, $post->ID )
        )
            continue;

        // Make item current
        $item->current = true;
        $item->classes[] = \'current-menu-item\';

        // Loop through ancestors and give them \'parent\' or \'ancestor\' class
        $active_anc_item_ids = mrw_get_item_ancestors( $item );
        foreach ( $items as $key => $parent_item ) {
            $classes = (array) $parent_item->classes;

            // If menu item is the parent
            if ( $parent_item->db_id == $item->menu_item_parent ) {
                $classes[] = \'current-menu-parent\';
                $items[ $key ]->current_item_parent = true;
            }

            // If menu item is an ancestor
            if ( in_array( intval( $parent_item->db_id ), $active_anc_item_ids ) ) {
                $classes[] = \'current-menu-ancestor\';
                $items[ $key ]->current_item_ancestor = true;
            }

            $items[ $key ]->classes = array_unique( $classes );
        }
    }

    return $items;
}
add_filter(\'wp_nav_menu_objects\',\'mrw_tax_archive_current\');

function mrw_get_item_ancestors( $item ) {
    $anc_id = absint( $item->db_id );

    $active_anc_item_ids = array();
    while (
        $anc_id = get_post_meta( $anc_id, \'_menu_item_menu_item_parent\', true )
        AND ! in_array( $anc_id, $active_anc_item_ids )
    )
        $active_anc_item_ids[] = $anc_id;

    return $active_anc_item_ids;
}

结束

相关推荐

How to add taxonomy in menus?

书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。