diff options
Diffstat (limited to 'themes/twentynineteen/classes/class-twentynineteen-walker-comment.php')
-rw-r--r-- | themes/twentynineteen/classes/class-twentynineteen-walker-comment.php | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/themes/twentynineteen/classes/class-twentynineteen-walker-comment.php b/themes/twentynineteen/classes/class-twentynineteen-walker-comment.php new file mode 100644 index 00000000..42fe89fb --- /dev/null +++ b/themes/twentynineteen/classes/class-twentynineteen-walker-comment.php @@ -0,0 +1,126 @@ +<?php +/** + * Custom comment walker for this theme + * + * @package WordPress + * @subpackage Twenty_Nineteen + * @since 1.0.0 + */ + +/** + * This class outputs custom comment walker for HTML5 friendly WordPress comment and threaded replies. + * + * @since 1.0.0 + */ +class TwentyNineteen_Walker_Comment extends Walker_Comment { + + /** + * Outputs a comment in the HTML5 format. + * + * @see wp_list_comments() + * + * @param WP_Comment $comment Comment to display. + * @param int $depth Depth of the current comment. + * @param array $args An array of arguments. + */ + protected function html5_comment( $comment, $depth, $args ) { + + $tag = ( 'div' === $args['style'] ) ? 'div' : 'li'; + + ?> + <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( $this->has_children ? 'parent' : '', $comment ); ?>> + <article id="div-comment-<?php comment_ID(); ?>" class="comment-body"> + <footer class="comment-meta"> + <div class="comment-author vcard"> + <?php + $comment_author_link = get_comment_author_link( $comment ); + $comment_author_url = get_comment_author_url( $comment ); + $comment_author = get_comment_author( $comment ); + $avatar = get_avatar( $comment, $args['avatar_size'] ); + if ( 0 != $args['avatar_size'] ) { + if ( empty( $comment_author_url ) ) { + echo $avatar; + } else { + printf( '<a href="%s" rel="external nofollow" class="url">', $comment_author_url ); + echo $avatar; + } + } + /* + * Using the `check` icon instead of `check_circle`, since we can't add a + * fill color to the inner check shape when in circle form. + */ + if ( twentynineteen_is_comment_by_post_author( $comment ) ) { + printf( '<span class="post-author-badge" aria-hidden="true">%s</span>', twentynineteen_get_icon_svg( 'check', 24 ) ); + } + + /* + * Using the `check` icon instead of `check_circle`, since we can't add a + * fill color to the inner check shape when in circle form. + */ + if ( twentynineteen_is_comment_by_post_author( $comment ) ) { + printf( '<span class="post-author-badge" aria-hidden="true">%s</span>', twentynineteen_get_icon_svg( 'check', 24 ) ); + } + + printf( + /* translators: %s: comment author link */ + wp_kses( + __( '%s <span class="screen-reader-text says">says:</span>', 'twentynineteen' ), + array( + 'span' => array( + 'class' => array(), + ), + ) + ), + '<b class="fn">' . get_comment_author_link( $comment ) . '</b>' + ); + + if ( ! empty( $comment_author_url ) ) { + echo '</a>'; + } + ?> + </div><!-- .comment-author --> + + <div class="comment-metadata"> + <a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>"> + <?php + /* translators: 1: comment date, 2: comment time */ + $comment_timestamp = sprintf( __( '%1$s at %2$s', 'twentynineteen' ), get_comment_date( '', $comment ), get_comment_time() ); + ?> + <time datetime="<?php comment_time( 'c' ); ?>" title="<?php echo $comment_timestamp; ?>"> + <?php echo $comment_timestamp; ?> + </time> + </a> + <?php + $edit_comment_icon = twentynineteen_get_icon_svg( 'edit', 16 ); + edit_comment_link( __( 'Edit', 'twentynineteen' ), '<span class="edit-link-sep">—</span> <span class="edit-link">' . $edit_comment_icon, '</span>' ); + ?> + </div><!-- .comment-metadata --> + + <?php if ( '0' == $comment->comment_approved ) : ?> + <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentynineteen' ); ?></p> + <?php endif; ?> + </footer><!-- .comment-meta --> + + <div class="comment-content"> + <?php comment_text(); ?> + </div><!-- .comment-content --> + + </article><!-- .comment-body --> + + <?php + comment_reply_link( + array_merge( + $args, + array( + 'add_below' => 'div-comment', + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + 'before' => '<div class="comment-reply">', + 'after' => '</div>', + ) + ) + ); + ?> + <?php + } +} |