Показать все сообщения

Я создаю страницу WordPress, где все мои сообщения в дочерних категориях команды отображаются в сетке. Я получил эту работу с приведенным ниже кодом. Форматирование и общий макет велики, однако он отображает только 5 последних записей в дочерней категории, а не все из них. В моей учетной записи WordPress у меня есть 7 сообщений, которые должны отображаться. Как мне получить сообщения, чтобы они отображали их все.

<ul class="faces"> <?php $categories = get_categories( 'child_of=2' ); foreach ( $categories as $category ) { echo '<div class="grid-row"><h2>'.$category->name.'</h2></div>'; $cat_posts = get_posts( 'cat='.$category->term_id ); $end = count( $cat_posts ) - 1; $i = 0; foreach ( $cat_posts as $post ) { setup_postdata( $post ); $face = get_field( 'face' ); $name = get_field( 'fullname' ); if ( $i % 6 === 0 ) { echo '<div class="grid-row">'; } echo '<div class="obj">'; echo wp_get_attachment_image($face) . '<div class="name">'.$name.'</div>'; echo '</div>'; if ( $i % 6 === 5 ) { echo '</div>'; } $i++; } }?> </ul> 

// CSS

 div.grid-row { width: 100%; height: 100%; position: relative; overflow: hidden; } div.obj{ float: left; position: relative; padding-right: 10px; } .faces{ width: 1000px; } 

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

ПЕРЕСМОТРЕТЬ ПОСЛЕ НИЖЕ: введите описание изображения здесь

REV ДЛЯ ПОСЛЕ НИЖЕ:

 <?php $categories = get_categories( 'child_of=2' ); foreach ( $categories as $category ) { echo '<div class="grid-row"><h2>'.$category->name.'</h2></div>'; $args1 = array( 'posts_per_page' => -1, 'cat='.$category->term_id ); $cat_posts = get_posts( $args1 ); $end = count( $cat_posts ) - 1; $i = 0; foreach ( $cat_posts as $post ) { $post_category = get_the_category($post->ID); if($post_category->cat_name == $category->name){ setup_postdata( $post ); $face = get_field( 'face' ); $name = get_field( 'fullname' ); if ( $i % 6 === 0 ) { echo '<div class="grid-row">'; } echo '<div class="obj">'; echo '<div class="faceThumb">'; echo wp_get_attachment_image($face); echo '</div>'; echo '<div class="name">'; echo $name; echo '</div>'; echo '</div>'; if ( $i % 6 === 5 ) { echo '</div>'; } } $i++; } }?> 

Solutions Collecting From Web of "Показать все сообщения"

Одним из аргументов, которые вы можете предоставить get_posts, является post_per_page. Если вы не включите это, по умолчанию оно будет установлено на странице «Показать страницы в большинстве» на странице «Чтение» ваших настроек. http://wordpress.org/support/topic/get_posts-not-pull-all-posts-unless-numberposts-in-query . Да, я знаю, что теме форума 2 года, но это подтверждает подозрение, что я прочитал http://codex.wordpress.org/Template_Tags/get_posts и исходный файл, указанный в нижней части этой страницы.

Может быть намного проще. Я не знаю, что такое get_field , я думаю, что это ваша пользовательская функция … но почему бы не использовать стандартные пользовательские поля и опубликовать миниатюру в будущем? Так или иначе

 $categories = get_categories( 'child_of=3' ); foreach ( $categories as $category ) { $i = -1; echo '<div class="grid-row"><h2>' . $category->name . '</h2></div>'; $args = array( 'posts_per_page' => -1, 'cat' => $category->term_id ); $cat_posts = new WP_Query($args); if ( $cat_posts->have_posts() ) : while ( $cat_posts->have_posts() ) : $i++; $cat_posts->the_post(); $face = get_field( 'face' ); $name = get_field( 'fullname' ); if ( $i % 6 == 0 ) echo '<div class="grid-row">'; echo '<div class="obj">'; echo '<div class="faceThumb">'; echo wp_get_attachment_image($face); echo '</div><div class="name">' . $name . '</div></div>'; if ( ($i % 6 == 5) || $i == ($cat_posts->post_count - 1) ) echo '</div>'; endwhile; endif; } wp_reset_postdata();