Intereting Posts
dbDelta создает только последнюю таблицу Список соавторов всех сообщений NGINX conf на WP Multisite enabled – подкаталог – изображения не загружаются после обновлений Как получить все пользовательские поля любого типа сообщений Как WordPress создает свою базу данных во время установки? создать шаблон для одной страницы Как импортировать комментарии в facebook в базу данных WordPress? Настройка поля темы в почтовых сообщениях WordPress? Как изменить параметр «Вставить / изменить ссылку», чтобы предлагать относительные URL-адреса? Импорт пользователей один раз в день без плагина Плагин не работает в пользовательской теме Страницы внутри страницы (с эскизами) WordPress на автоматическом масштабировании AWS и ELB, дающем 503 Получить размер файла из поля повторителя ACF Почему некоторые параметры API REST изменились на идентификаторы вместо строк, когда API перешел в WP Core?

get_pages – отображать страницы потомков внуков

У меня такая структура страницы.

Portfolio - Residential - - Resident 1 - - Resident 2 - - Resident 3 - Commercial - - Commercial 1 - - Commercial 2 - - Commercial 3 

Страницы внуков Resident 1 – Commercial 3 имеют миниатюры

У меня есть шаблон для страницы Портфолио, где я хотел бы отображать страницы «Жилые» и «Коммерческие» с их дочерними страницами, например.

  <div class="grid"> <h2>Residential</h2> <ul> <li> Resident 1 post_thumbnail </li> <li> Resident 2 post_thumbnail </li> <li> Resident 3 post_thumbnail </li> </ul> </div> <div class="grid"> <h2>Commercial</h2> <ul> <li> Commercial 1 post_thumbnail </li> <li> Commercial 2 post_thumbnail </li> <li> Commercial 3 post_thumbnail </li> </ul> </div> 

Я использую get_pages, и у меня есть div, созданный для 'Residential' и 'Commercial'

  <?php $portfolio_sections = array( 'post_type' => 'page', 'child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC', 'parent' => $post->ID ); $sections = get_pages($portfolio_sections); foreach($sections as $section){ ?> <div class="grid"> <h2><?php echo $section->post_title; ?></h2> //Create Child pages </div><!--.grid--> <?php } ?> 

Моя проблема заключается в создании дочерних страниц в списке «ul»

Я попытался использовать второй цикл foreach, но это не сработало, и я не знаю, правильно ли это

  <?php $portfolio_sections = array( 'post_type' => 'page', 'child_of' => $post->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC', 'parent' => $post->ID ); $sections = get_pages($portfolio_sections); foreach($sections as $section){ ?> <div class="grid"> <h2><?php echo $section->post_title; ?></h2> <ul class="imageGrid"> <?php $portfolio_pages = array( 'post_type' => 'page', 'child_of' => $section->ID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC', 'parent' => $section->ID ); $pages = get_pages($portfolio_pages); foreach($pages as $page){ ?> <li><a href="<?php echo get_the_permalink($page->ID);?>"><?php echo get_the_post_thumbnail($page->ID, "thumbnail"); ?><span><?php echo get_the_title($page->ID);?></span></a></li> <?php } ?> </ul> </div><!--.grid--> <?php } ?> 

— ОБНОВИТЬ —-

Структура, которую я хотел. Оболочка вокруг каждого списка ul

  <div class="grid"> <h2>Residential</h2> <ul> <li> Resident 1 post_thumbnail </li> <li> Resident 2 post_thumbnail </li> <li> Resident 3 post_thumbnail </li> </ul> </div> <div class="grid"> <h2>Commercial</h2> <ul> <li> Commercial 1 post_thumbnail </li> <li> Commercial 2 post_thumbnail </li> <li> Commercial 3 post_thumbnail </li> </ul> </div> 

Структура из кода – это один окружающий div.

  <div class="grid"> <h2>Residential</h2> <ul> <li> Resident 1 post_thumbnail </li> <li> Resident 2 post_thumbnail </li> <li> Resident 3 post_thumbnail </li> </ul> <h2>Commercial</h2> <ul> <li> Commercial 1 post_thumbnail </li> <li> Commercial 2 post_thumbnail </li> <li> Commercial 3 post_thumbnail </li> </ul> </div> 

Вам не нужны 2 запроса, просто используйте немного логики и 2 цикла foreach:

 $portfolioID = $post->ID; $portfolio_sections = array( 'post_type' => 'page', 'child_of' => $portfolioID, 'sort_column' => 'menu_order', 'sort_order' => 'ASC', ); $sections = get_pages($portfolio_sections); $hierachical = array(); if ( ! empty($sections) ) { foreach ( $sections as $section ) { if ( $section->post_parent == $portfolioID ) { if ( ! isset( $hierachical[$section->ID]) ) $hierachical[$section->ID] = array(); $hierachical[$section->ID]['child'] = $section; $hierachical[$section->ID]['grandchildes'] = array(); } else { if ( ! isset( $hierachical[$section->post_parent]) ) $hierachical[$section->post_parent] = array(); $hierachical[$section->post_parent]['grandchildes'][] = $section; } } foreach ( $hierachical as $id => $hierachical_data ) { if ( ! isset($hierachical_data['child']) || ! is_object($hierachical_data['child']) ) continue; echo '<div class="grid">'; echo '<h2>' . get_the_title($hierachical_data['child']->ID) . '</h2>'; echo '<ul>'; if ( isset($hierachical_data['grandchildes']) && ! empty($hierachical_data['grandchildes']) ) { foreach ( $hierachical_data['grandchildes'] as $grandchild ) { if ( has_post_thumbnail($grandchild->ID)) { echo '<li><a href="' . get_permalink( $grandchild->ID ) . '" title="' . esc_attr( $grandchild->post_title ) . '">'; echo get_the_post_thumbnail($grandchild->ID); echo '</a></li>'; } } } echo '</ul>'; echo '</div>'; } } 

Код не проверен, но должен работать.