Ordenar por Categoría y Post en WP Query personalizada
NB: No tengo suficiente reputación para hacer la pregunta directamente en la publicación mencionada.
He usado algo de código de 1: Obtener todas las categorías y posts en esas categorías
Lista todas las Categorías con los Posts dentro de esas Categorías, pero tengo problemas para establecer el orderby...
Específicamente el Revisitar respuesta aquí
<?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; // Crear un array con los nombres de categoría y títulos de posts
}
/* Restaurar datos originales del Post */
wp_reset_postdata();
foreach ($q as $key=>$values) {
echo $key;
echo '<ul>';
foreach ($values as $value){
echo '<li>' . $value . '</li>';
}
echo '</ul>';
}
?>
Lo que estoy intentando hacer es añadir ordenación por Título de Categoría, y luego dentro de esa categoría ordenar por Título del Post.
Puedo añadirlo en los $args iniciales en la línea 1
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
);
Esto ordena las categorías según el título de los posts contenidos en esa categoría.
Estoy intentando conseguir que las Categorías estén en orden ASC, y luego los posts dentro de cada categoría en orden ASC pero no consigo averiguar cómo ordenar ambos.
Agradecería mucho cualquier consejo

Para hacer esto primero debes obtener todas las categorías en orden ascendente usando
get_categories
y luego pasar el cat_id enWP_Query
para obtener los posts relacionados con esa categoría.
$args_cat = [
'orderby' => 'name', // Ordenar por nombre
'order' => 'ASC', // Orden ascendente
'hide_empty' => 0, // Mostrar categorías vacías
];
$categories = get_categories($args_cat);
//print_r($categories); // Depuración: muestra el array de categorías
if (!empty($categories)):
foreach ($categories as $category):
$args = [
'post_type' => 'post', // Tipo de contenido: posts
'posts_per_page' => -1, // Mostrar todos los posts
'order' => 'ASC', // Orden ascendente
'orderby' => 'title', // Ordenar por título
'cat' => $category->term_id // ID de la categoría actual
];
$query = new WP_Query($args);
while ($query->have_posts()) : $query->the_post();
// Tu código aquí
the_title(); // Muestra el título del post
//...
endwhile;
wp_reset_postdata(); // Reinicia la consulta
endforeach;
endif;
¡Espero que esto te ayude!
