Cum să ordonezi după categorie și post în interogarea personalizată WP
NB: Nu am suficiente puncte de reputație pentru a pune întrebarea direct pe postul menționat.
Am folosit niște cod de la 1: Obține toate categoriile și postările din acele categorii
Aceasta listează toate categoriile cu postările din acele categorii, dar am probleme cu setarea ordinii...
Mai exact Revedeți răspunsul aici
<?php
$args = array(
'posts_per_page' => -1
);
$query = new WP_Query($args);
$q = array();
while ( $query->have_posts() ) {
$query->the_post();
$a = '<a href="'. get_permalink() .'">' . get_the_title() .'</a>';
$categories = get_the_category();
foreach ( $categories as $key=>$category ) {
$b = '<h2><a href="' . get_category_link( $category ) . '">' . $category->name . '</a></h2>';
}
$q[$b][] = $a; // Creează un array cu numele categoriilor și titlurile postărilor
}
/* Restaurare date Post originale */
wp_reset_postdata();
foreach ($q as $key=>$values) {
echo $key;
echo '<ul>';
foreach ($values as $value){
echo '<li>' . $value . '</li>';
}
echo '</ul>';
}
?>
Ceea ce încerc să fac este să adaug ordonarea după Titlul Categoriei, apoi în cadrul acelei categorii să ordonez după Titlul Postării.
Pot adăuga asta în $args inițial la linia 1
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
);
Aceasta sortează categoriile în ordinea titlurilor postărilor conținute în acea categorie.
Încerc să obțin categoriile în ordine ASC, apoi postările din acea categorie tot în ordine ASC dar nu reușesc să le ordonez pe ambele.
Aș fi foarte recunoscător pentru orice sfat.

Pentru a face acest lucru, trebuie mai întâi să obțineți toate categoriile în ordine crescătoare folosind
get_categories
, apoi trebuie să transmiteți cat_id înWP_Query
pentru a obține postările asociate cu acea categorie.
$args_cat = [
'orderby' => 'name', // Ordonează după nume
'order' => 'ASC', // Ordine crescătoare
'hide_empty' => 0, // Afișează și categoriile goale
];
$categories = get_categories($args_cat);
//print_r($categories);
if (!empty($categories)):
foreach ($categories as $category):
$args = [
'post_type' => 'post', // Tipul de postare
'posts_per_page' => -1, // Toate postările
'order' => 'ASC', // Ordine crescătoare
'orderby' => 'title', // Ordonează după titlu
'cat' => $category->term_id // ID-ul categoriei
];
$query = new WP_Query($args);
while ($query->have_posts()) : $query->the_post();
//Codul tău
the_title(); // Afișează titlul postării
//...
endwhile;
wp_reset_postdata(); // Resetează interogarea
endforeach;
endif;
Sper că acest lucru vă ajută!
