Вложенные циклы WordPress - PullRequest
       2

Вложенные циклы WordPress

0 голосов
/ 31 марта 2020

У меня есть некоторый код (см. Ниже) из онлайн-учебника, который отображает алфавитный список названий категорий, а затем, под каждой категорией, список заголовков сообщений для этой категории.

Это работает, но я хочу, чтобы заголовки сообщений также отображались в алфавитном порядке. В настоящее время это только названия категорий в алфавитном порядке - см. Изображение:

Problem with post title display

Я провел некоторые онлайн-исследования и думаю, что мне, возможно, потребуется настроить a 'nested l oop' - но я понятия не имею, как отредактировать мой код, чтобы сделать это.

Надеюсь, кто-то может показать мне, как редактировать код, чтобы отображать названия категорий и заголовки сообщений в алфавитном порядке.

Это код, который я использую:

// Grab all the categories from the database that have posts.
$categories = get_terms( 'category', 'orderby=name&order=ASC');
// Loop through categories
foreach ( $categories as $category ) {
   // Display category name
   echo '<h2 class="post-title">' . $category->name . '</h2>';
   echo '<div class="post-list">';
   // WP_Query arguments
   $args = array(
   'cat' => $category->term_id,
   'orderby' => 'term_order',
 );

// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
?>
<p><a href="<?php the_permalink();?>"><?php the_title(); ?></a></p>
<?php
} // End while
} // End if
echo '</div>';
// Restore original Post Data
wp_reset_postdata();
} // End foreach

1 Ответ

2 голосов
/ 31 марта 2020
$categories = get_terms( 'category', 'orderby=name&order=ASC');
// Loop through categories
foreach ( $categories as $category ) {
   // Display category name
   echo '<h2 class="post-title">' . $category->name . '</h2>';
   echo '<div class="post-list">';
   // WP_Query arguments
   $args = array(
   'cat' => $category->term_id,   
   'order' => 'ASC',
   'orderby' => 'title',
 );

// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
?>
<p><a href="<?php the_permalink();?>"><?php the_title(); ?></a></p>
<?php
} // End while
} // End if
echo '</div>';
// Restore original Post Data
wp_reset_postdata();
} // End foreach

Мы можем добавить аргумент orderby с заголовком.

...