Perché usare if con il ciclo while?
if(have_posts()): // Controlla se ci sono post da visualizzare
while(have_posts()): // Cicla finché ci sono post
the_post(); // Prepara i dati del post
the_content(); // Mostra il contenuto del post
endwhile;
endif;
Anche senza la condizione if, questo codice funziona correttamente:
while(have_posts()): // Cicla finché ci sono post
the_post(); // Prepara i dati del post
the_content(); // Mostra il contenuto del post
endwhile;
Grazie.

Hai bisogno del if ( have_posts() ) :
solo se, come suggerisce il nome della funzione, devi fare qualcosa di diverso quando non ci sono post. Questo potrebbe essere qualcosa come mostrare un messaggio "Nessun post trovato."
Ma avresti bisogno di questo controllo solo nei template che potrebbero non mostrare post, come gli archivi e la ricerca. Per i template di singoli post e pagine, il if
non è necessario.

Hai ragione, non è necessario.
Tuttavia, spesso vorrai racchiudere l'output dei post in un <div class="posts">
o qualcosa di simile, e puoi rendere l'output di quel div condizionale in base al fatto che ci sarà effettivamente qualcosa al suo interno, il che lo rende molto più pulito da stilizzare secondo me, perché non ti ritroverai con <div class="posts"></div>
se non ci sono post. Non avrai bisogno di usare alcun selettore :empty
nel tuo CSS per nascondere questo div vuoto, poiché non sarà affatto nel DOM.
