Автоматически добавлять подкатегории продуктов WooCommerce в категории в меню. ⇐ Php
-
Гость
Автоматически добавлять подкатегории продуктов WooCommerce в категории в меню.
Я пытаюсь написать код для автоматического добавления категорий и подкатегорий WooCommerce в меню, но я хочу иметь возможность выбирать уровень подкатегорий, которые будут фильтроваться. например, если я установил уровень параметра 0, я хочу оставить только верхние категории. если я установлю уровень 1 для отображения только верхних подкатегорий категорий. этот код теперь выполняет свою работу, но добавляет все подкатегории.
if ( ! function_exists('wpcb_add_product_subcats_to_menu')) { /** * wpcb_add_product_subcats_to_menu. * * @see https://wpcodebook.com/snippets/automat ... s-in-menu/ */ функция wpcb_add_product_subcats_to_menu($items) { если ( is_admin() ) { вернуть $элементы; } $ Children_order = количество ($ пунктов) + 1; foreach ($items как $item) { $items = wpcb_process_menu_item($item, $items, $children_order); } вернуть $элементы; } } if ( ! function_exists('wpcb_process_menu_item')) { /** * wpcb_process_menu_item. */ function wpcb_process_menu_item($item, $items, &$children_order) { if ('product_cat' === $item->object) { $дети = get_terms(массив( 'taxonomy' => 'product_cat', 'hide_empty' => ложь, 'родительский' => $item->object_id, 'предел' => -1, 'orderby' => 'заголовок', 'заказ' => 'ASC', ) ); if ( ! пустой($дети) && ! is_wp_error($дети)) { foreach ($children как $child) { $tmp_item = новый stdClass(); $tmp_item->ID = 100000 + $children_order; $tmp_item->post_author = $item->post_author; $tmp_item->post_date = ''; $tmp_item->post_date_gmt = ''; $tmp_item->post_content = ''; $tmp_item->post_title = ''; $tmp_item->post_excerpt = ''; $tmp_item->post_status = 'опубликовать'; $tmp_item->comment_status = ''; $tmp_item->ping_status = ''; $tmp_item->post_password = ''; $tmp_item->post_name = $child->name; $tmp_item->to_ping = ''; $tmp_item->pinged = ''; $tmp_item->post_modified = ''; $tmp_item->post_modified_gmt = ''; $tmp_item->post_content_filtered = ''; $tmp_item->post_parent = 0; $tmp_item->guid = ''; $tmp_item->menu_order = $children_order; $tmp_item->post_type = 'nav_menu_item'; $tmp_item->post_mime_type = ''; $tmp_item->comment_count = ''; $tmp_item->фильтр = 'сырой'; $tmp_item->db_id = $tmp_item->ID; $tmp_item->menu_item_parent = $item->ID; $tmp_item->object_id = $child->term_id; $tmp_item->object = 'product_cat'; $tmp_item->type = 'таксономия'; $tmp_item->type_label = ''; $tmp_item->url = get_term_link($child->term_id); $tmp_item->title = $child->name; $tmp_item->target = ''; $tmp_item->attr_title = ''; $tmp_item->description = ''; $tmp_item->classes = array(0 => ''); $tmp_item->xfn = ''; $items[] = $tmp_item; $ Children_order ++; $items = wpcb_process_menu_item($tmp_item, $items, $children_order); } } } вернуть $элементы; } }```
Я пытаюсь написать код для автоматического добавления категорий и подкатегорий WooCommerce в меню, но я хочу иметь возможность выбирать уровень подкатегорий, которые будут фильтроваться. например, если я установил уровень параметра 0, я хочу оставить только верхние категории. если я установлю уровень 1 для отображения только верхних подкатегорий категорий. этот код теперь выполняет свою работу, но добавляет все подкатегории.
if ( ! function_exists('wpcb_add_product_subcats_to_menu')) { /** * wpcb_add_product_subcats_to_menu. * * @see https://wpcodebook.com/snippets/automat ... s-in-menu/ */ функция wpcb_add_product_subcats_to_menu($items) { если ( is_admin() ) { вернуть $элементы; } $ Children_order = количество ($ пунктов) + 1; foreach ($items как $item) { $items = wpcb_process_menu_item($item, $items, $children_order); } вернуть $элементы; } } if ( ! function_exists('wpcb_process_menu_item')) { /** * wpcb_process_menu_item. */ function wpcb_process_menu_item($item, $items, &$children_order) { if ('product_cat' === $item->object) { $дети = get_terms(массив( 'taxonomy' => 'product_cat', 'hide_empty' => ложь, 'родительский' => $item->object_id, 'предел' => -1, 'orderby' => 'заголовок', 'заказ' => 'ASC', ) ); if ( ! пустой($дети) && ! is_wp_error($дети)) { foreach ($children как $child) { $tmp_item = новый stdClass(); $tmp_item->ID = 100000 + $children_order; $tmp_item->post_author = $item->post_author; $tmp_item->post_date = ''; $tmp_item->post_date_gmt = ''; $tmp_item->post_content = ''; $tmp_item->post_title = ''; $tmp_item->post_excerpt = ''; $tmp_item->post_status = 'опубликовать'; $tmp_item->comment_status = ''; $tmp_item->ping_status = ''; $tmp_item->post_password = ''; $tmp_item->post_name = $child->name; $tmp_item->to_ping = ''; $tmp_item->pinged = ''; $tmp_item->post_modified = ''; $tmp_item->post_modified_gmt = ''; $tmp_item->post_content_filtered = ''; $tmp_item->post_parent = 0; $tmp_item->guid = ''; $tmp_item->menu_order = $children_order; $tmp_item->post_type = 'nav_menu_item'; $tmp_item->post_mime_type = ''; $tmp_item->comment_count = ''; $tmp_item->фильтр = 'сырой'; $tmp_item->db_id = $tmp_item->ID; $tmp_item->menu_item_parent = $item->ID; $tmp_item->object_id = $child->term_id; $tmp_item->object = 'product_cat'; $tmp_item->type = 'таксономия'; $tmp_item->type_label = ''; $tmp_item->url = get_term_link($child->term_id); $tmp_item->title = $child->name; $tmp_item->target = ''; $tmp_item->attr_title = ''; $tmp_item->description = ''; $tmp_item->classes = array(0 => ''); $tmp_item->xfn = ''; $items[] = $tmp_item; $ Children_order ++; $items = wpcb_process_menu_item($tmp_item, $items, $children_order); } } } вернуть $элементы; } }```
Мобильная версия