8 index.php

index.php è il template di fallback che viene usato qualora non ne esistano di specifici per quella particolare pagina.

<?php get_header(); ?>
    <div id="main-container">
        <section id="content-container">
            <?php
            if (have_posts() ) :
                while ( have_posts()) : the_post();
                    // Mostra data 1 volta per pagina
                    the_date('', '<h3 >',
                        '</h3>' );
                    ?>
                    <article id="post-<?php the_ID(); ?>"
                        <?php post_class(); ?>>
                        <header>
                            <h2 class="entry-title">
                                <a href="<?php the_permalink(); ?>" title="<?php
                                the_title_attribute(); ?>" rel="bookmark">
                                    <?php the_title(); ?>
                                </a>
                            </h2>
                            <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() ) : ?>                &bull;
                                    <?php comments_popup_link( 'No comments', '1 comment', '% comments' );
                                    endif; ?>
                            </p>
                        </header>
                        <?php
                        // Il contenuto
                        the_content();
                        ?>
                    </article>
                    <?php
                    // carica commenti se ce n'è uno solo
                    if ( is_singular() ) {
                        comments_template('',true );
                    }
                    // fine loop
                endwhile;
            // Non c'è nulla ne loop?
            else :
                ?>
                <article id="post-0" class="post noresults not-found">
                    <header>
                        <h2 class="entry-title">
                            Non è stato trovato niente
                        </h2>
                    </header>
                    <p>
                        Spiacenti, ma non abbiamo trovato nulla per voi.
                        Provate con una nuova ricerca
                    </p>
                    <?php
                    get_search_form();
                    ?>
                </article>
            <?php
            endif;
            ?>
        </section> <!-- #main-container ends -->
        <?php get_sidebar(); ?>
    </div>
<?php get_footer(); ?>

Iniziamo dicendo che dovranno essere inclusi header footer e sidebar e questo può essere fatto con i tag get_header(), get_footer() e get_sidebar(); , che includeranno il contenuto dei 3 files.

A seguire si include il loop che visualizza i post.

the_date() restituisce la data e qual’ora ci fossero più post con la stessa data, verrebbe stampata soltanto una volta. Se il loop è vuoto verrà eseguita la parte dell’else con un relativo messaggio.

Notate alcune classi nel tag <article> dopo endwhile. Queste classi seguono gli standard di WordPress; l’unica ragione per aggiungere l’ID post-0, per esempio, è far funzionare i plugin che applicano all’ID un trattamento speciale (tramite CSS o JavaScript). La classe post è utile perché vi permette di caratterizzare il contenuto così come fareste con un normale post.

is_singular() esegue un controllo dei fallback e può tornare utile se per qualche ragione al tema mancasse il template single.php. La funzione restituisce true quando viene visualizzato un singolo post, una pagina o un singolo allegato.

if ( is_singular() ) {
    comments_template('',true );
}

Se is_singular() restituisce true viene caricata comments_template() che visualizza i commenti se ce n’è almeno uno su un post o una pagina. Gli argomenti sono il file contenente il modello commenti (di default comments.php) e il booleano $separate_comments cioè se separare i commenti in base al tipo.