Categorias de loop por publicação recente

Estou procurando uma maneira de percorrer as categorias e, em seguida, exibir as postagens recentes para cada uma em um recipiente, mas eu preciso de uma maneira de classificar as categorias pelas quais as postagens mais recentes

Então, se Categoria C tiver uma publicação mais recente, aparecerá primeiro antes da categoria A

$args = array( 'hide_empty'=> 1 ); $categories = get_categories($args); foreach($categories as $category) { $the_query = new WP_Query(array( 'post_type' => 'article', 'posts_per_page' => 100, 'category_name' => $category->slug )); while ( $the_query->have_posts() ) : $the_query->the_post(); ?> // post studd endwhile; } 

Solutions Collecting From Web of "Categorias de loop por publicação recente"

Primeiro configure uma function para ser usada mais tarde com um usort para classificar as categorias por data da publicação mais recente:

  function orderByDate( $a, $b ) { return strtotime($a['date']) - strtotime($b['date']); } 

Obtenha suas categorias conforme você estava fazendo:

  $args = array( 'hide_empty'=> 1 ); $categories = get_categories($args); $categoriesWithDates = array(); // Create an array variable to be used in a moment $counter = 0; foreach($categories as $category) { $the_query = new WP_Query(array( 'post_type' => 'article', 'posts_per_page' => 1, //This time only get one post 'category_name' => $category->slug, 'order' => 'DESC' )); 

No loop while, criamos uma matriz contendo a slug de categoria e a data da publicação mais recente:

  while ( $the_query->have_posts() ) : $the_query->the_post(); $categoriesWithDates[$counter] = array('slug' => $category->slug, 'date' => get_the_date(DATE_RFC2822)); endwhile; $counter++; } wp_reset_query(); 

Classifique as categorias por data usando usort e a function orderByDate()

  usort($categoriesWithDates, "orderByDate"); 

Crie um novo loop para exibir as postagens, desta vez usando a matriz recém-criada e ordenada por datas, categorias com datas. Isso terá ordenado as suas lesões de categoria em ordem de qual tem as postagens mais recentes, colocando isso em sua consulta com um foreach, portanto, exibirá as categorias na ordem que deseja que elas sejam:

  foreach($categoriesWithDates as $categoryWithDate) { $the_query = new WP_Query(array( 'post_type' => 'article', 'posts_per_page' => 100, 'category_name' => $categoryWithDate['slug'] )); while ( $the_query->have_posts() ) : $the_query->the_post(); // Post studd endwhile; } 

Poderia haver uma maneira melhor de criar isso em um loop, mas seria preciso mais pensar, e isso deveria começar você de qualquer maneira! Algo assim deve fazer o truque, embora não o tenha testado.

EDITAR:

Eu adicionei em um contador que eu acho que poderia ajudar a resolver os problemas. Além disso, eu configurei o formato da data em get_the_date() para DATE_RFC2822 (veja: http://php.net/manual/en/function.date.php ). Além disso, wp_reset_query(); foi adicionado entre as duas consultas.