10 singoli post e pagine
In ogni tema che si rispetti non possono mancare i template files single.php per i singoli post e page.php per le pagine.
single.php è una versione semplificata di index.php, senza tutto quello che riguarda il fallback e con get_template_part( ‘content’, ‘single’ ) invece dell’approccio get_post_format().
Ecco single.php
<?php get_header(); ?> <div id="main-container"> <section id="content-container"> <?php // loop while ( have_posts()) : the_post(); //carica file del loop get_template_part('content','single'); // carica commenti se ce n'è uno solo comments_template('',true ); // fine loop endwhile; ?> </section> <!-- #main-container ends --> <?php get_sidebar(); ?> </div> <?php get_footer(); ?>
single.php cercherà dapprima di caricare content-single.php; qualora non ci riuscisse, caricherà content.php
Creiamo il file content-single.php che sia basato sul content.php originale ma senza il link del titolo, usando h1 invece di h2 e senza controllare se si tratta di un singolo post o di una pagina, in quanto lo sappiamo già:
<article id="post-<?php the_ID(); ?>"> <?php post_class(); ?> <header> <h1 class="entry-title"> <?php the_title(); ?> </h1> <p class="entry-meta"> Postato il <time datetime="<?php echo get_the_date(); ?>"> <?php the_time(); ?> </time> by <?php the_author_link(); ?> <?php // i commenti sono aperti? if (comments_open()) : ?> • <?php comments_popup_link('Nessun commento', '1 solo comment', '% commenti'); endif; // Mostra le cat e i tag sui post singoli if (is_singular('post')) : ?> <br/>Archiviato in <?php get_the_category(','); the_tags(' e taggato con', ',', ''); ?> </p> <?php endif; endif; ?> </header> </article>
Per page.php, noterete che è molto simile. In effetti vi basterebbe semplicemente copiare il contenuto da single.php e incollarlo in page.php. Se voleste un look and feel diverso per le vostre pagine, probabilmente dovreste creare un file content-page.php e utilizzare get_template_part( ‘content’, ‘page’ );.
In content-single.php, si racchiudete la parte meta in un tag condizionale, is_single(), che restituisce true solo quando visualizzate un post singolo di un certo tipo. Questo include gli allegati ma non le pagine. Ecco il file content-single.php aggiornato:
<article id="post-<?php the_ID(); ?>"> <?php post_class(); ?> <header> <h1 class="entry-title"> <?php the_title(); ?> </h1> <?php if (is_single()) : ?> <p class="entry-meta"> Postato il <time datetime="<?php echo get_the_date(); ?>"> <?php the_time(); ?> </time> by <?php the_author_link(); ?> <?php // i commenti sono aperti? if (comments_open()) : ?> • <?php comments_popup_link('Nessun commento', '1 solo comment', '% commenti'); endif; // Mostra le categorie e i tag sui post singoli if ( is_singular('post') ) : ?> <br/>Archiviato in <?php the_category(','); the_tags(' e taggato con', ',', ''); ?> </p> <?php endif; endif; ?> </header> <?php // Il contenuto the_content(); ?> </article>
arriviamo ora al file comments.php per caratterizzare i commenti.
<div id="comments"> <?php // Il post è protetto da password? if ( post_password_required() ) : ?> <p class="nopassword"> Questo post è protetto da password. Digitate la vostra password. </p> </div> <?php // Torna indietro return; endif; // Cerca i commenti if ( have_comments() ) : ?> <h2 id="comments-title"> Ci sono<?php comments_number( 'zero commenti', '1 commento', '% commenti' ); ?> </h2> <?php // Navigazione tra i commenti if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?> <nav id="comments-nav-above"> <div class="nav-previous"> <?php previous_comments_link( '← Vecchi commenti' ); ?> </div> <div class="nav-next"> <?php next_comments_link( 'Prossimi comenti →' ); ?> </div> </nav> <?php endif; ?> <ol class="commentlist"> <?php // Elenco commenti wp_list_comments(); ?> </ol> <?php // Navigazione tra i commenti if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : ?> <nav id="comments-nav-above"> <div class="nav-previous"> <?php previous_comments_link( '← Vecchi commenti' ); ?> </div> <div class="nav-next"> <?php next_comments_link( 'Prossimi comenti →' ); ?> </div> </nav> <?php endif; // finito endif; ?> <?php // Esce dal form del commento comment_form(); ?> </div>
La parte più significativa è wp_list_comments() che genera i commenti veri e propri. Può impiegare alcuni parametri e, qualora vi servisse, vi permette anche di perfezionare l’output usando il parametro di callback per puntare a una funzione in functions.php.