Я пытаюсь создать собственное отображение категорий на боковой панели, и для этого мне нужен какой-то способ получить как список категорий, так и дочерний список в двух разных массивах или что-то подобное…
Сначала я попробовал функцию get_categories
, но она не позволяет мне собирать только категории верхнего уровня:
$args=array('orderby' => 'name', 'order' => 'ASC');
$categories=get_categories($args);
Затем я перешел к тому wp_list_categories
, что делает то, что я хочу. Однако возврат не дает мне массив данных, который я могу запросить. Это дает мне простой список в формате HTML, готовый к печати:
$categories=wp_list_categories('echo=0&style=none&orderby=name&order=ASC&depth=1&title_li=');
-
Есть ли способ собрать список категорий верхнего уровня таким образом, чтобы я мог персонализировать его по своему желанию?
Например:
foreach($category_list as $category) { echo ' <li>'; echo ' <a title="' . sprintf( __( "View all posts in %s" ), $category->cat_name ) . '" href="' . get_category_link($category->cat_ID) . '">' . $category->cat_name . ' (' . $category->cat_ID .') </a>'; echo ' <a onclick="s_toggleDisplay(document.getElementById('CHILD CATS'), this, '▼', '▲');" href="javascript:void(null);">▼</a>'; echo ' </li>'; }
Почему мне нужен только верхний уровень? Потому что я хотел сделать функцию отображения/скрытия для детей категории верхнего уровня. Если у вас есть другой способ выполнить это или предложение, дайте мне знать.
Вы можете пропустить категории, у которых есть родитель в вашем цикле:
Я просмотрел источник, но, похоже, он
depth
учитывается только в нем,wp_list_categories()
и вам, вероятно, потребуется расширитьWalker_Category
класс до пользовательского ходока, чтобы внести изменения в вывод.На самом деле, это может быть хорошей идеей, если вам нужен действительно сложный формат вывода категорий.
УДИВИТЕЛЬНО, вы попали в точку, догадка будет проверять источник чаще, потому что документы не сообщают о возвращаемом родительском поле. Благодарю.