web-dev-qa-db-fra.com

Quelles sont les meilleures pratiques recommandées actuellement pour comments.php?

Je me prépare à soumettre un thème au rapport .Org et je voulais m'assurer que tout est en ordre. L'un des plus gros trous qui reste dans ma conception est le modèle de commentaires.

J'ai jeté un coup d'œil à comments.php dans quelques thèmes, dont Twenty Ten en est le chef et qui sont repartis plus confus qu'au début. Il semble que (basé sur des tutoriels d'Otto, WP Engineer, etc.), le modèle de commentaires ait été simplifié, mais lorsque je regarde la source du commentaire comments de la plupart des thèmes, ils sont toujours aussi compliqués. comme dans les jours anciens dérivés de Christian-Montoya.

Alors aidez-moi - quelle est la meilleure façon de configurer un modèle de commentaires qui capturera les fonctionnalités de pointe à partir de WP 3.0/3.1 tout en maintenant la simplicité du code?

4
ZaMoose

Vous n'avez vraiment pas besoin de beaucoup.

Un titre avec id = commentaires

<h2 id="comments"><?php comments_number(); ?></h2>

Ce sera la cible pour comments_link() dans la boucle de l'article.

Liens pour les commentaires paginés.

D'habitude, je mets ces liens dans une fonction et appelle la fonction au-dessus et au-dessous de la liste de commentaires:

class TTT_Template {
    function comment_pager()
    {
        if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) )
        {
            ?>
            <div class="comment-navigation">
                <div class="nav-previous">
                <?php
                previous_comments_link( 'Ältere Kommentare' );
                ?>
                </div>
                <div class="nav-next">
                <?php
                next_comments_link( 'Neuere Kommentare' );
                ?>
                </div>
            </div>
        <?php
        }
    }
}

wp_list_comments ()

Vous pouvez utiliser une fonction de rappel personnalisée, mais ce n’est pas obligatoire. Pour un thème sur wp.org, j’utiliserais des gravatars dans le rappel. Et je n’aurais pas l’espace de noms avec my_. ;)

<ol class="commentlist">
<?php
wp_list_comments(
    array (
        'type'     => 'comment'
    ,   'style'    => 'ul'
    ,   'callback' => 'my_comment_callback'
    )
);
?></ol>

Comme vous pouvez le constater, le paramètre type vous permet de séparer les commentaires normaux des pings. Voir le codex pour plus d'informations. Si vous créez deux listes distinctes, cochez get_option( 'default_ping_status' ); pour éviter une liste vide.

comment_form ();

Vous pouvez utiliser les paramètres par défaut ou ajouter vos propres filtres. J'utilise une classe personnalisée pour déplacer la zone de texte vers le haut et réorganiser d'autres petites choses.

if ( comments_open( get_the_ID() ) )
{
    locate_template( array ( '/php/class.TTT_Comment_Form.php' ), TRUE, TRUE );
    $ttt_comment_class = new TTT_Comment_Form();
    comment_form();
}

Et c'est tout.

Code complet

<?php
if ( ! defined('ABSPATH') ) { die ('Nö.'); }

if ( have_comments() )
{
    ?><h2 id="comments"><?php comments_number(); ?></h2>
    <?php
    TTT_Template::comment_pager();
    ?>
    <ol class="commentlist">
    <?php
    wp_list_comments(
array (
            'type'  => 'comment'
        ,   'style' => 'ul'
        ,   'callback' => 'my_comment_callback'
    )
    );
    ?></ol>
    <?php
    TTT_Template::comment_pager();
}

if ( comments_open( get_the_ID() ) )
{
    locate_template( array ( '/php/class.TTT_Comment_Form.php' ), TRUE, TRUE );
    $ttt_comment_class = new TTT_Comment_Form();
    comment_form();
}
6
fuxia

Utilisez Disqus

0
GavinR