在Wordpress菜单中按名称ASC对WooCommerce产品类别子菜单项进行排序

埃里克·德国

我将我的主WordPress菜单添加到WooCommerce产品类别菜单项中,将子类别子项作为具有以下代码的子菜单项,它可以正常工作。

在此处输入图片说明

编码:

add_filter("wp_get_nav_menu_items", function ($items, $menu, $args) {

    // don't add child categories in administration of menus
    if (is_admin()) {
        return $items;
    }
    foreach ($items as $index => $i) {

        if ("product_cat" !== $i->object) {
            continue;
        }
        $term_children = get_term_children($i->object_id, "product_cat");
        // add child categories
        foreach ($term_children as $index2 => $child_id) {
            $child = get_term($child_id);
            $url = get_term_link($child);
            $e = new \stdClass();
            $e->title = $child->name;
            $e->url = $url;
            $e->menu_order = 500 * ($index + 1) + $index2;
            $e->post_type = "nav_menu_item";
            $e->post_status = "published";
            $e->post_parent = $i->ID;
            $e->menu_item_parent = $i->ID;
            $e->type = "custom";
            $e->object = "custom";
            $e->description = "";
            $e->object_id = 0;
            $e->db_id = 0;
            $e->ID = 0;
            $e->position = 0;
            $e->classes = array();
            $items[] = $e;
        }
    }

    return $items;

}, 10, 3); 

但是我想按升序对子菜单项进行排序,但是我还没有找到一种方法。如何按名称(字母)升序对子菜单项排序?

LoicTheAztec

需要一个附加的foreach循环,以按名称对类别子菜单项进行排序。另外,您的代码中有些疏漏(以避免出现一些错误)。最后,出于多种原因,您应该始终为钩子函数命名。

重新访问的代码:

add_filter( 'wp_get_nav_menu_items', 'custom_submenu_product_categories', 10, 3 );
function custom_submenu_product_categories( $items, $menu, $args ) {
    // don't add child categories in administration of menus
    if (is_admin()) {
        return $items;
    }

    $taxonomy = 'product_cat';

    foreach ($items as $index => $post) {

        if ( $taxonomy !== $post->object ) {
            continue;
        }

        $children_terms_ids = get_term_children( $post->object_id, $taxonomy );
        $unsorted_terms     = array(); // Initializing

        // Loop through children terms to prepare them to be sorted by name
        foreach ( $children_terms_ids as $child_id ) {
            $child_term = get_term( $child_id, $taxonomy );

            $unsorted_terms[$child_term->name] = $child_term; // Set each term in an array for sorting
        }

        ksort($unsorted_terms); // Sort menu sub-items by term name ASC

        $index2 = 0; // Initializing

        // Loop through sorted child terms to set them as sorted sub menu items
        foreach ( $unsorted_terms as $child_term_name => $child_term ) {
            $item = new \stdClass();

            $item->title            = $child_term_name;
            $item->url              = get_term_link( $child_term, $taxonomy );
            $item->menu_order       = 500 * ($index + 1) + $index2;
            $item->post_type        = 'nav_menu_item';
            $item->post_status      = 'published';
            $item->post_parent      = $post->ID;
            $item->menu_item_parent = $post->ID;
            $item->type             = 'custom';
            $item->object           = 'custom';
            $item->description      = '';
            $item->object_id        = 0;
            $item->db_id            = 0;
            $item->ID               = 0;
            $item->position         = 0;
            $item->classes          = array();
            $item->target           = ''; // <= Missing - Mandatory to avoid an error
            $item->xfn              = ''; // <= Missing - Mandatory to avoid an error

            $items[] = $item;
            $index2++;
        }
    }
    return $items;
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试和工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将活动的类别添加到woocommerce产品类别当前菜单项

从WordPress菜单隐藏WooCommerce空产品类别

从WooCommerce的订单项中获取产品类别ID

按名称对HTML菜单项进行排序?

在 WooCommerce 中显示不包括产品类别的订单项目名称

将标签类添加到导航菜单中的当前 Woocommerce 产品类别

如何在Woocommerce中更改产品类别菜单?

按菜单项标题对Smartgwt菜单进行排序

菜单项 wordpress Woocommerce

从产品类别和自定义meta_key对Woocommerce产品进行排序

如何从WooCommerce中的订单项获取产品类别ID

按字母顺序对菜单项进行排序

在 Java 或 C# 中按汽车公司产品类别对列表进行排序时需要帮助

在Woocommerce中按产品类别,产品标签和价格查询

汇总WooCommerce订单中按产品类别订购的产品数量

从Woocommerce中的子产品类别ID获取父产品类别ID

在Woocommerce单一产品页面中获取产品类别名称和描述

在WooCommerce的末尾对特定产品类别购物车项目进行排序

从WooCommerce中的“相关产品”中排除产品类别

在Woocommerce中检查产品类别的产品

按产品类别名称的订单行

在Woocommerce我的帐户部分中对菜单项进行重新排序

在Woocommerce订单详细信息中显示产品类别名称

如何在 Wordpress 中对齐来自 WooCommerce 的中心产品类别?

在Woocommerce中根据产品类别更改货币符号

在Woocommerce中基于产品类别隐藏价格

获取WooCommerce中的所有产品类别

将变化价格添加到Woocommerce中的可变产品下拉菜单项名称中

Opencart产品类别中的制造商名称