📜  wordpress 显示帖子评论编号 - PHP (1)

📅  最后修改于: 2023-12-03 14:48:32.722000             🧑  作者: Mango

WordPress 显示帖子评论编号 - PHP

WordPress 是一款广泛使用的开源内容管理系统,支持多种扩展和插件。在 WordPress 的博客页面中,我们可以添加评论功能来让用户互动,但是有时我们需要对评论进行编号来方便管理和统计。本文将介绍如何使用 PHP 在 WordPress 中显示帖子评论编号。

获取评论编号

在 WordPress 中,每条评论都有一个唯一的 comment_ID 属性,我们可以利用这个属性来获取评论编号。下面是获取评论编号并输出的 PHP 代码:

$comments = get_comments( array(
    'post_id' => get_the_ID(),
    'orderby' => 'comment_date_gmt',
    'order' => 'ASC',
) );

$counter = 1;

foreach ( $comments as $comment ) {
    printf( '<p>%d. %s</p>', $counter, get_comment_text( $comment ) );
    $counter++;
}

首先使用 get_comments() 函数获取当前文章的所有评论,并按照时间升序排序。然后使用 $counter 变量来计数,循环遍历每条评论并输出带有编号的评论内容。

输出到 WordPress 模板

我们可以将上述代码添加到 WordPress 博客页面的主题模板中,例如 single.phpcomments.php 文件中。下面是一个简单的示例,将评论编号加入到默认 WordPress 主题中:

<?php
if ( have_comments() ) :
    $comments_number = get_comments_number();
?>

    <div class="comments-area" id="comments">
        <h2 class="comments-title">
            <?php
            if ( 1 === $comments_number ) {
                printf(
                    /* translators: 1: title. */
                    esc_html__( 'One thought on &ldquo;%1$s&rdquo;', 'theme_name' ),
                    '<span>' . esc_html( get_the_title() ) . '</span>'
                );
            } else {
                printf(
                    /* translators: 1: number of comments. 2: title. */
                    esc_html( _nx( '%1$s thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', $comments_number, 'comments title', 'theme_name' ) ),
                    number_format_i18n( $comments_number ),
                    '<span>' . esc_html( get_the_title() ) . '</span>'
                );
            }
            ?>
        </h2>

        <?php
        the_comments_pagination( array(
            'prev_text' => esc_html__( '&laquo; Prev', 'theme_name' ),
            'next_text' => esc_html__( 'Next &raquo;', 'theme_name' ),
        ) );
        ?>

        <ol class="comment-list">
            <?php
            $comments = get_comments( array(
                'post_id' => get_the_ID(),
                'orderby' => 'comment_date_gmt',
                'order' => 'ASC',
            ) );

            $counter = 1;

            foreach ( $comments as $comment ) :
            ?>
                <li>
                    <article id="comment-<?php comment_ID(); ?>">
                        <header class="comment-header">
                            <div class="comment-author vcard">
                                <?php echo get_avatar( $comment, 48 ); ?>
                                <?php printf( '<cite class="comment-author-name">%s</cite>', get_comment_author_link() ); ?>
                                <?php printf( '<time datetime="%s">%s</time>', get_comment_time( 'c' ), get_comment_date() ); ?>
                                <?php edit_comment_link( esc_html__( 'Edit', 'theme_name' ), '<span class="edit-link">', '</span>' ); ?>
                            </div>
                        </header>

                        <div class="comment-content">
                            <?php comment_text(); ?>
                        </div>

                        <footer class="comment-footer">
                            <?php
                            comment_reply_link( array_merge( $args, array(
                                'depth' => $depth,
                                'max_depth' => $args['max_depth'],
                                'before' => '<p class="reply">',
                                'after' => '</p>',
                            ) ) );
                            ?>
                        </footer>
                    </article>
                </li>
            <?php
                $counter++;
            endforeach; // end foreach
            ?>
        </ol>

        <?php
        the_comments_pagination( array(
            'prev_text' => esc_html__( '&laquo; Prev', 'theme_name' ),
            'next_text' => esc_html__( 'Next &raquo;', 'theme_name' ),
        ) );
        ?>

        <?php if ( ! comments_open() && get_comments_number() ) : ?>
            <p class="comments-closed"><?php esc_html_e( 'Comments are closed.', 'theme_name' ); ?></p>
        <?php endif; ?>
    </div>

<?php
endif; // end have_comments()

在上述示例代码中,我们首先使用 have_comments() 函数判断当前文章是否有评论,如果有则输出评论编号。在循环遍历评论时,我们使用 $counter 变量来计数并输出编号。最后使用 the_comments_pagination() 函数输出评论的分页导航。

结语

如上所述,通过上述代码示例,您现在可以显示 WordPress 中的帖子评论编号,使您的页面更易于管理和统计。实际使用时,您可能需要根据具体情况调整代码逻辑或样式。祝您使用愉快!