Почему дизайн выглядит так сложно?

Я создаю тему полностью с нуля, и после простого процесса до этого момента я достиг файла comments.php. Опять же, ничего необычного, пока это:

$ callback (string) (необязательно) Имя настраиваемой функции, используемой для открытия и отображения каждого комментария. Используя это, вы вызываете свою пользовательскую функцию для отображения каждого комментария, минуя все внутренние функции WordPress в этом отношении. Используйте для настройки отображения комментариев для экстремальных изменений в макете HTML. Обратите внимание, что ваш обратный вызов должен включать открывающий <div> , <ol> или <ul> (соответствующий параметру стиля), но не закрывающие теги. WordPress автоматически добавит закрывающий тег, или вы можете использовать обратный вызов для переопределения этого значения по умолчанию. Обратный вызов отделен от обратного вызова для упрощения иерархических комментариев. Используйте с осторожностью.

Почему это так безумно? Почему нет способа создать шаблон comment.php, который будет использоваться для каждого комментария? (Или, если есть, пожалуйста, дайте мне знать)

Если вы предпочитаете простые файлы шаблонов, вы можете сделать это с помощью пользовательских обратных вызовов комментариев.

Вызовите wp_list_comments() с помощью специального обработчика обратного вызова:

 wp_list_comments( array( 'callback' => 'custom_comment_callback', 'style' => 'ol' ) ); 

Теперь сделайте эту функцию обратного вызова очень простой:

 function custom_comment_callback( $comment, $args, $depth ) { include 'comment-template.php'; } 

И теперь вы можете использовать comment-template.php как и любой другой шаблон.

Вот простой пример, показывающий, какие переменные доступны:

 <?php # -*- coding: utf-8 -*- print '<pre>$comment = ' . esc_html( var_export( $comment, TRUE ) ) . '</pre>'; print '<pre>$args = ' . esc_html( var_export( $args, TRUE ) ) . '</pre>'; print '<pre>$depth = ' . esc_html( var_export( $depth, TRUE ) ) . '</pre>'; 

Вы также можете использовать тело функций существующего обработчика обратного вызова, например, из Twenty Twelve, и он будет работать:

 <?php # -*- coding: utf-8 -*- $GLOBALS['comment'] = $comment; switch ( $comment->comment_type ) : case 'pingback' : case 'trackback' : // Display trackbacks differently than normal comments. ?> <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>"> <p><?php _e( 'Pingback:', 'twentytwelve' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?></p> <?php break; default : // Proceed with normal comments. global $post; ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> <article id="comment-<?php comment_ID(); ?>" class="comment"> <header class="comment-meta comment-author vcard"> <?php echo get_avatar( $comment, 44 ); printf( '<cite class="fn">%1$s %2$s</cite>', get_comment_author_link(), // If current post author is also comment author, make it known visually. ( $comment->user_id === $post->post_author ) ? '<span> ' . __( 'Post author', 'twentytwelve' ) . '</span>' : '' ); printf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>', esc_url( get_comment_link( $comment->comment_ID ) ), get_comment_time( 'c' ), /* translators: 1: date, 2: time */ sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() ) ); ?> </header><!-- .comment-meta --> <?php if ( '0' == $comment->comment_approved ) : ?> <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentytwelve' ); ?></p> <?php endif; ?> <section class="comment-content comment"> <?php comment_text(); ?> <?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?> </section><!-- .comment-content --> <div class="reply"> <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply', 'twentytwelve' ), 'after' => ' <span>&darr;</span>', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div><!-- .reply --> </article><!-- #comment-## --> <?php break; endswitch; // end comment_type check