WordPress категории и их подкатегории - PullRequest
1 голос
/ 05 апреля 2010

Привет, я ищу, чтобы получить все (родительские) категории со своими детьми соответственно (при условии, что у вас нет внуков) и создать следующую структуру

  <div class="box">
    <h3><a href="#">Parent Category I</a></h3>
    <ul>
      <li><a href="#">sub cat 1</a></li>
      <li><a href="#">sub cat 2</a></li>
      <li><a href="#">sub cat 3</a></li>
    </ul>
  </div>
  <div class="box">
    <h3><a href="#">Parent Category II</a></h3>
    <ul>
      <li><a href="#">sub cat 1</a></li>
      <li><a href="#">sub cat 2<</a></li>
      <li><a href="#">sub cat 3</a></li>
    </ul>
  </div>

Я подумал, что это что-то вроде (не обращайте внимания на синтаксис), однако я не знаю, как получить эти (родительские) категории и их потомков:

$parents = ... ;

foreach($parents as $parent){
<div>
<h3>$parent</h3>

$children = ...;
<ul>
foreach ($children as $child){
<li>$child</li>
}
</ul>

</div>

}

Ответы [ 3 ]

0 голосов
/ 05 апреля 2010

как написал Бенни, wp_list_categories будет вашей лучшей функцией для использования.

Возможно, вам следует переосмыслить структуру html, так как WordPress форматирует ваш список категорий в неупорядоченном списке, так что если ваш стиль не загружается, он представлен в естественном формате. Однако вы можете изменить это поведение, изменив значение «иерархический» на false.

Надеюсь, это поможет:)

0 голосов
/ 07 апреля 2010

хорошо, я все понял сам, спасибо, Бенни и Роб.

Я в основном сделал 2 функции

function getParentCategories() {
    global $wpdb;
    $sql = "SELECT term_id as id, name, slug FROM wp_terms where term_id in (SELECT term_id FROM wp_term_taxonomy where parent = 0 and taxonomy = 'category') order by name asc";
    $parents = $wpdb->get_results( $sql );
    return $parents;
}

function getChildCategories($id) {
        global $wpdb;
        $sql = "SELECT term_id as id, name, slug FROM wp_terms where term_id in (SELECT term_id FROM wp_term_taxonomy where parent = $id and taxonomy = 'category')  order by name asc";
        $children = $wpdb->get_results( $sql );
        return $children;
    }
0 голосов
/ 05 апреля 2010

Я бы начал с get_categories () и wp_list_categories () (функция, хотя она может и не подходить для ваших нужд, очень гибкая), и думаю, что вы пришлось бы использовать цикл for, чтобы пройти через родительские категории с вложенным циклом для обработки потомков (как подсказывает ваш псевдокод). Особенно с wp_list_categories() вы, вероятно, не сможете получить именно ту структуру, которую хотите, но, по крайней мере, что-то, что вы сможете разумно стилизовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...