Come stilizzare il primo post nel loop come "nuovo/in evidenza" in WordPress
Spero di riuscire a spiegarmi correttamente. Quello che sto cercando di fare è utilizzare il loop predefinito di WordPress per mostrare tutti i miei post, ma per il primo post vorrei applicare uno stile completamente diverso in base alla categoria genitore in cui è stato pubblicato. Ci sarebbe molto da personalizzare in quel primo post.
Attualmente sto ottenendo parzialmente questo risultato utilizzando 2 loop che attingono entrambi dal default. Il primo loop è l'area del mio post "nuovo/in evidenza" ed è impostato con posts_per_page=1, mentre il secondo loop è il loop standard. Il problema che sto riscontrando è che ovviamente mostra post duplicati. Ho provato ad usare offset=1 nel secondo loop, ma così la mia paginazione smette di funzionare. Qualsiasi aiuto o indicazione sarebbe fantastico, so che è complesso. Di seguito il mio codice per entrambi i loop e un link al sito di test. Grazie!
Primo loop (nuovo/in evidenza):
<?php $custom_query = new WP_Query('posts_per_page=1');
while($custom_query->have_posts()) : $custom_query->the_post(); ?>
<?php
$parent_cat = array();
$post_cats = get_the_category($post->ID);
foreach( $post_cats as $post_cat ) {
if( $post_cat->parent ) $parent_cat[] = get_category( $post_cat->parent )->slug;
}
?>
<!--CONTENUTO QUI-->
<?php endwhile; ?>
<?php wp_reset_postdata(); // reset della query ?>
<?php } else { ?>
Secondo loop (standard):
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<!--CONTENUTO QUI-->
<?php endwhile; else: ?>
<?php _e('Spiacente, nessun post corrisponde ai tuoi criteri.'); ?>
<?php endif; ?>
Ecco un link al sito di sviluppo dove puoi vedere di cosa sto parlando: http://themes.thefragilemachine.com/gone/
Grazie per qualsiasi aiuto!
Controlla anche is_archive() o !is_singular() per assicurarti che la pagina non abbia un singolo post. Non so se is_paged() abbia lo stesso effetto.

sembra funzionare ma mostra solo 1 post e nessun estratto, http://themes.thefragilemachine.com/gone/, ho notato che ho is_paged()

Aggiungi semplicemente una variabile che funzionerà una sola volta con PHP come in questo esempio:
<?php $custom_query = new WP_Query('posts_per_page=1');
$i = 0; while($custom_query->have_posts()) : $custom_query->the_post(); ?>
<?php if($i==0){
// fai - echo quello che vuoi
$i++;
} else {
// resto dei post
} ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); // resetta la query ?>
