Intereting Posts
PHP-скрипт для очистки базы данных и папки WP Где загрузить файл sitemap.xml в WordPress? query_posts упорядочивает несколько способов загадочная проблема с остановкой слов в URL-адресах, которые не работают – как я могу восстановить множественный доступ к URL-адресу? Как делиться сообщениями в WordPress Multisite? Сложная проблема с отображением метаданных получателей сообщений Команды не синхронизированы; вы не можете запустить эту команду сейчас в wordpress, используя PHP 5.4 Сломанный CSS после изменения URL-адреса сайта Как предотвратить предварительный просмотр короткого кода от взлома редактора tinymce? правильно использовать add_settings_field? Выберите персонализированные сообщения с помощью meta_value и отсортируйте их с помощью другого мета-значения Запросы, которые имеют пользовательскую таксономию Можно ли остановить выбранные плагины от загрузки на определенных страницах шаблона? как искать все Как разделить созданные таблицы таблиц плагинов между двумя сайтами WordPress

Как разбивать список дочерних страниц

Я использую следующий код для отображения дочерних страниц текущей просматриваемой страницы. Но он выводит только последние 5 дочерних страниц; Я хочу, чтобы он перечислил все страницы в блоках по 5 с «следующей» и «предыдущей» ссылками. Например, он работает на обычных постах. Код, который я использую, следующий:

<?php $ancestors = array(); $ancestors = get_ancestors($post->ID,'page'); $parent = (!empty($ancestors)) ? array_pop($ancestors) : $post->ID; if (!empty($parent)) { $kids = new WP_Query( array( 'post_parent'=>$parent, 'post_type' => 'page', 'ignore_sticky_posts' => true ) ); if ($kids->have_posts()) { while ($kids->have_posts()) { $kids->the_post(); echo '<li>' . '<div>' . '<a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a>' . '<span>' . '<a href="' . get_permalink() . '">' . get_the_title() . '</a>' . '</span><br/>'; echo '<div class="extrainfo">'; echo the_field("info_add"); echo '</div>'; echo '</div></li>'; } } } ?> 

Эта страница является следующей: http://dedos.info/flavioc/trabalhos/

Теперь мне интересно, если бы я использовал Custom Post Types для управления этим, но теперь уже слишком поздно. Любая помощь будет оценена, спасибо.

Solutions Collecting From Web of "Как разбивать список дочерних страниц"

Опция 1:

Лично я предпочитаю это, потому что он дает вам больше возможностей в долгосрочной перспективе. Особенно учитывая другие настройки, связанные с вторичным запросом, взгляните на мой другой ответ, который я привел ниже.

Что вам нужно сделать, используйте предлагаемый параметр WP_Query . Кроме того, вам нужно настроить переменную – здесь $paged – представляющую $paged на страницы. Имея это, вы можете использовать paginate_links() для создания ссылок на страницы.

Код:

 global $post; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $ancestors = array(); $ancestors = get_ancestors($post->ID,'page'); $parent = (!empty($ancestors)) ? array_pop($ancestors) : $post->ID; if (!empty($parent)) { $kids = new WP_Query( array( 'post_parent'=>$parent, 'post_type' => 'page', 'ignore_sticky_posts' => true, 'paged' => $paged ) ); if ($kids->have_posts()) { while ($kids->have_posts()) { $kids->the_post(); echo '<li>' . '<div>' . '<a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a>' . '<span>' . '<a href="' . get_permalink() . '">' . get_the_title() . '</a>' . '</span><br/>'; echo '<div class="extrainfo">'; echo the_field("info_add"); echo '</div>'; echo '</div></li>'; } if ( get_option('permalink_structure') ) { $format = 'page/%#%'; } else { $format = '&paged=%#%'; } $args = array( 'base' => get_permalink( $post->post_parent ) . '%_%', 'format' => $format, 'current' => $paged, 'total' => $kids->max_num_pages ); echo paginate_links( $args ); wp_reset_postdata(); } } 

Примечание: непроверенный

Дополнительные параметры см. В соответствующих документах. Если вы хотите разделить вторичный запрос, который отображается в дополнение к основному запросу отдельно к последнему, вам нужно сделать еще пару шагов, я недавно объяснил им другой вопрос . Если вы, например, хотели бы другой переписать вместо страницы, то это означает, что вам нужно использовать другую переменную запроса, а затем выгружать ее, вы также можете найти всю информацию, необходимую для этого, в вопросе, который я связал.

Вариант 2:

Вы также можете получить разбивку на страницы. Это все еще зависит от настройки параметра paged и соответствующей переменной, см. Выше. Если вы хотите использовать другие функции ссылок на страницы, предлагаемые wordpress, например, previous_posts_link / next_posts_link() или posts_nav_link , это проще реализовать. Ключ здесь временно заменяет $wp_query как показано ниже, потому что эти функции по умолчанию – для большего количества параметров конфигурации, читающих документацию, – получают доступ к этому объекту для создания ссылок на страницы.

Код:

 global $post, $wp_query; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $ancestors = array(); $ancestors = get_ancestors($post->ID,'page'); $parent = (!empty($ancestors)) ? array_pop($ancestors) : $post->ID; if (!empty($parent)) { $kids = new WP_Query( array( 'post_parent'=>$parent, 'post_type' => 'page', 'ignore_sticky_posts' => true, 'paged' => $paged ) ); // Put default query object in a temp variable $tmp_query = $wp_query; // Now wipe it out completely $wp_query = null; // Re-populate the global with our custom query $wp_query = $kids; if ($kids->have_posts()) { while ($kids->have_posts()) { $kids->the_post(); echo '<li>' . '<div>' . '<a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a>' . '<span>' . '<a href="' . get_permalink() . '">' . get_the_title() . '</a>' . '</span><br/>'; echo '<div class="extrainfo">'; echo the_field("info_add"); echo '</div>'; echo '</div></li>'; } posts_nav_link(); // Restore original query object $wp_query = null; $wp_query = $tmp_query; wp_reset_postdata(); } }