Sortarea articolelor după numele categoriei și titlu
Încerc să găsesc o modalitate de a afișa articolele mele în funcție de titlul categoriei (a-z) și, în al doilea rând, după titlul articolelor din cadrul categoriei:
CATEGORIA A
- Un articol care începe cu a
- Pentru că vreau să fiu afișat al doilea
- Hai, afișează-mă odată
CATEGORIA B
- Alt articol care începe cu a
- Bine, nu-mi mai vine alt titlu cu B
- Cred că ai înțeles ideea
Cum pot realiza acest lucru?

Pentru a le afișa grupate pe categorii, trebuie să parcurgi lista de categorii și apoi să interoghezi fiecare categorie:
$categories = get_categories( array ('orderby' => 'name', 'order' => 'asc' ) );
foreach ($categories as $category) {
echo "Categoria este: $category->name <br/>";
$catPosts = new WP_Query( array ( 'category_name' => $category->slug, 'orderby' => 'title' ) );
if ( $catPosts->have_posts() ) {
while ( $catPosts->have_posts() ) {
$catPosts->the_post();
echo "<a href='the_permalink()'>the_title()</a>";
}
echo "<p><a href='category/$category->slug'>Mai multe în această categorie</a></p>";
} //end if
} //end foreach
wp_reset_postdata();

Pentru scalabilitate, nu recomand utilizarea mai multor elemente WP_Query
atunci când nu sunt necesare. Folosirea unui singur get_terms
și a unei singure interogări WP_Query
este tot ce ai nevoie. Apoi vei avea toate elementele și poți utiliza array_filter
pentru a determina care postări se află în fiecare categorie.

Cred că te referi la GRUPAREA Postărilor
după categorie/taxonomie NU SORTAREA
.
Iată un cod pentru a GRUPA
după categorie/taxonomie
$terms = get_terms( 'my_cat_name' );
Aici, cat_name
este numele taxonomiei, când o înregistrezi astfel: de exemplu.
register_taxonomy( 'my_cat_name', array( 'custom_post_name' ), $args )
Folosește-o în
Interogare
de exemplu:$args = array( 'post_type' => 'custom_post_name', 'my_cat_name' => $term->slug, 'posts_per_page' => $no_of_posts, );
Cod complet:
$terms = get_terms( 'CUSTOM_TAXONOMY_SLUG' ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){ $output .= '<ul class="category-list">'; foreach ( $terms as $term ) { $output .= '<li class="single-cat">'; $output .= ' <h3>' . $term->name . '</h3>'; // Numele Taxonomiei/Categoriei $args = array( 'post_type' => 'POST_TYPE_SLUG', 'CUSTOM_TAXONOMY_SLUG' => $term->slug, 'posts_per_page' => -1, ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { $output .= '<ul class="cat-post-list">'; while ( $the_query->have_posts() ) { $the_query->the_post(); $output .=' <li class="cat-single-post">'; $output .=' <h4><a href="'.get_the_permalink().'">' .get_the_title(). '</a></h4>'; $output .=' </li><!-- .cat-single-post -->'; } $output .= '</ul><!-- .cat-post-list -->'; } wp_reset_postdata(); $output .= '</li><!-- .single-cat-item -->'; } $output .= '</ul><!-- .category-list -->'; }

Extinderea lucrării lui Maheshwaghmare;
<?
$terms = get_terms( 'CUSTOM_TAXONOMY' );
if ( ! empty( $terms ) ){ ?>
<div class="POST_TYPE_PLURAL">
<? foreach ( $terms as $term ) {
//print_r($term) // DEBUG;
$term_slug = $term->slug;
$term_name = $term->name;
$term_description = $term->description;
?>
<div class="POST_TYPE_CATEGORY <?=$term_slug; ?>">
<h1 class="section-head"> <?=$term_name; ?> </h1>
<p><?=$term_description; ?> </p>
<?
$args = array(
'post_type' => 'CUSTOM_POST_TYPE',
'tax_query' => array(
array(
'taxonomy' => 'CUSTOM_TAXONOMY',
'field' => 'slug',
'terms' => $term_slug,
),
),
'posts_per_page' => -1,
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : ?>
<? while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="POST_TYPE_SINGLE">
<h3> <? the_title(); ?> </h3>
<? // MAI MULT COD DE TEMPLATING ?>
</div>
<? endwhile;
endif;
wp_reset_postdata(); ?>
</div>
<? } // foreach
} //if terms
?>

Aș fi interesat să aflu dacă este mai bine să continui să creez instanțe de wp_query sau ar fi mai bine să creez un array dintr-una și apoi să folosesc array-ul pentru a popula.

Puteți folosi parametrul orderby
pentru o nouă instanță wp_query
:
$query = new WP_Query( array ( 'orderby' => 'title', 'order' => 'DESC' ) );
Deci pentru fiecare categorie folosiți o instanță separată.
Mai multe informații aici: http://codex.wordpress.org/Class_Reference/WP_Query
