web-dev-qa-db-ja.com

Comments.phpに関して現在推奨されているベストプラクティスは何ですか?

私はテーマを.Orgレポに提出する準備をしていて、すべてが正しく行われていることを確認したいと思いました。私のデザインに残っている最大の穴の1つはコメントテンプレートです。

私はいくつかのテーマでcomments.phpを見ました、それらの間の二十テンチーフ、そして私が始めたときより混乱しています。コメントテンプレートは(Ottoのチュートリアル、WPエンジニアなどに基づいて)単純化されているように見えますが、ほとんどのテーマのcomments.phpのソースを見ると、まだ複雑です。クリスチャンモントーヤに由来する昔の時代のように。

それでは、私を助けてください - WP 3.0/3.1の時点での最先端の機能をとらえ、それでもコードの単純さを維持するコメントテンプレートを設定する最も良い方法は何ですか?

4
ZaMoose

あなたは本当に多くを必要としません。

Id = commentsの見出し

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

これが記事ループの comments_link() のターゲットになります。

ページ付けされたコメントへのリンク。

通常、これらのリンクを関数に入れて、コメントリストの上と下の関数を呼び出します。

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()

あなたはカスタムコールバック関数を使うことができます、しかし、あなたはする必要はありません。 wp.​​orgのテーマでは、コールバックにグラバターを使用します。そして、私はmy_で名前を付けないでください。 ;)

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

ご覧のとおり、typeパラメータを使用すると、通常のコメントとpingを区別することができます。詳しくは コーデックス をご覧ください。 2つの別々のリストを作成する場合は、空のリストを避けるためにget_option( 'default_ping_status' );をチェックしてください。

comment_form();

あなたは デフォルト 設定を使うか、あなた自身のフィルタを追加することができます。私は カスタムクラス を使ってtextareaを上に移動し、他の細かいことをいくつか並べ替えます。

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();
}

そしてそれだけです。

完全なコード

<?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

使用 Disqus

0
GavinR