@Legal2019
Всё в имени моём... и радость и печаль...

Как сделать вывод get_pages в виде маркированного списка с учётом иерархии страниц?

Всем привет.
Существует такая конструкция:
<?php
$mypages = get_pages( array(
    'child_of'      => $post->ID,
    'sort_order'    => 'ASC',
    'sort_column'   => 'ID','post_parent','post_name','post_title','menu_order',
    'meta_key'      => '',
    'meta_value '   => '',
    'number'   => ''
    ) );
foreach( $mypages as $page ) {      
     //     $content = $page->post_content;     //  публикация контента всей страницы
     //     $content = $page->post_excerpt;     //  публикация отрывка (цитата) страницы
     //     пропустим страницу без контента
     //     if ( ! $content ) continue; // если $content = $page->post_excerpt; не содержит отрывка, то такую запись пропустит и она не будет выведена
     //     $content = apply_filters( 'the_content', $content );
	?>
	            <li class="***">
                        <h2 style="">
                            <a href="<?php echo get_page_link( $page->ID ); ?>"><?php echo $page->post_title; ?></a>
                        </h2><!--. gh-link1 H2 -->
                        <div class="***1">
                        <?php //echo $content; ?>
                        </div>< !--. post_excerpt -- >
	<?php
};?>


Чёт ума не приложу как сделать так, чтобы вывод был не в виде:
<li><h2><a>****</a></h2></li>
А формировался с учётом иерархии страниц, в виде:
<ul>
   <li>
       <h2><a>****</a></h2>
       <div>content</div>
   </li>
      <ul>
         <li><h2><a>****</a></h2><div>content</div></li>
         <li><h2><a>****</a></h2><div>content</div></li>
      </ul>
</ul>


Помогите пожалуйста.
Цель:
Привести длинный малочитабельный список в вид как на рисунке № 1.
Рис. № 1
5dc871774b38c859706402.jpeg
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 2
glaphire
@glaphire
PHP developer
Ответ без привязки к WP: сделайте запросы на получение постов первого порядка, а потом при переборе их через foreach делайте запрос на получение дочерних страниц (примерно where post_parent = current_post_id) и выводите их вложенным списком.
Ответ написан
ssenj
@ssenj
HTML, CSS, PHP, WordPress, Bitrix
$mypages = get_pages( array(
'child_of' => $post->ID,
'sort_order' => 'ASC',
'sort_column' => 'ID','post_parent','post_name','post_title','menu_order',
'meta_key' => '',
'meta_value ' => '',
'number' => ''
) );


Этим запросом ты разве не получаешь все необходимые страницы?
Если получаешь, то в объекте страницы указывается ID родителя. Пробегис foreach'ем и собери необходимую структуру.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы