• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Меню категорий как проверить есть ли дочерние

DarkAlien

Форумчанин
Добрый день, есть код в файле Functions:

function get_categories_product($categories_list = '', $parent_id = 0) {

$get_categories_product = get_terms('product_cat', [
'hide_empty' => 1, // Скрывать пустые. 1 - да, 0 - нет.
'hierarchical' => 1,
'parent' => $parent_id
]);
if(count($get_categories_product) > 0) {
$categories_list .= ($parent_id == 0 ? '<ul class="nav-items nav-level-1">' : '<ul class="nav-items nav-expand-content">');
foreach($get_categories_product as $categories_item) {
$categories_list .= '<li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#" style="float: right;"></a><a class="nav-link" href="'.esc_url(get_term_link((int)$categories_item->term_id)).'"> '.esc_html($categories_item->name).' </a>'.get_categories_product('', $categories_item->term_id).'</li>';
}
$categories_list .= '</ul>';
}
return $categories_list;
}
add_shortcode('textshortcode', 'wpschool_text_shortcode');
function wpschool_text_shortcode() {
echo get_categories_product();
}




На странице я размешаю шорткод
выводит древо категорий:
html кусок:
<ul class="nav-items nav-level-1"><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Плинтус напольный </a><ul class="nav-items nav-expand-content"><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Плинтус алюминиевый </a><ul class="nav-items nav-expand-content"><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Ликорн алюминиевый плинтус </a><ul class="nav-items nav-expand-content"><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Микро плинтус Лайн Ликорн </a></li><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Скрытый плинтус Ликорн </a></li></ul></li><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Плинтус алюминиевый Diele </a></li><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Скрытый плинтус Evrowood </a></li><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Скрытый плинтус Madest Decor </a></li></ul></li><li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#"> Крепеж для плинтуса </a></li></ul></li></ul>
Вопрос как в цикл foreach добавить проверку есть ли дочерние категории если есть то
$categories_list .= '<li class="nav-item nav-expand"><a class="nav-link nav-expand-link" href="#" style="float: right;"></a><a class="nav-link" href="'.esc_url(get_term_link((int)$categories_item->term_id)).'"> '.esc_html($categories_item->name).' </a>'.get_categories_product('', $categories_item->term_id).'</li>';
а если нету то:
$categories_list .= '<li class="nav-item"><a class="nav-link nav-expand-link" href="#" style="float: right;"></a><a class="nav-link" href="'.esc_url(get_term_link((int)$categories_item->term_id)).'"> '.esc_html($categories_item->name).' </a>'.get_categories_product('', $categories_item->term_id).'</li>';
 

marr

Специалист
Местный
У вас же есть в коде проверка
$parent_id == 0 ?
 

DarkAlien

Форумчанин
это проверка для 1 ур, с ней всё понятно вопрос в том где последний уровень который не имеет дочерних как то их отделить от остального набора
 
Сверху Снизу