В Вордпрессе есть настройка для реверсных комментов. Она отлично работает если у вас не пагинированые комментарии. Если комменты пагинированные, то этот порядок будет выглядеть не правильно. Если вы на этой странице, то вы понимаете о чем я говорю.
Настройками это исправить нельзя, к сожалению. Но легко исправить харкодом в ядро ( что совершенно не правильно ). В файле /wp-includes/comment-template.php делаем так:
1 2 3 4 5 6 7 8 |
$comment_args = array( // 'order' => 'ASC', // ORIGINAL 'order' => 'DESC', // AZZ REVERSE COMMENTS ( в настройках все должно быть включено для прямого порядка !!! ) // также нужно поправить comments.php для получени я правильной ссылки 'orderby' => 'comment_date_gmt', 'status' => 'approve', 'post_id' => $post->ID, ); |
При этом в настройках WordPress порядок комментариев не трогаем ( оставляем прямым ).
При таком харкоде порядок комментариев становится правильным, однако ссылки на комментарии становятся не правильными. Например в Recent Comments или при отправке комментария комментатор редиректится на страницу где его комментария нет. Тут, к сожалению, также придется хардкодить. /wp-includes/comment.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/** * Azz * Все это из-за реверсных комментов * */ // Count comments older than this one //$oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) ); // Azz REVERSE COMMENT LINK $oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt > '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) ); // No older comments? Then it's page #1. //if ( 0 == $oldercoms) // Azz REVERSE COMMENT LINK if ( 0 == $oldercoms || ($oldercoms - 1) < 1) return 1; // Divide comments older than this one by comments per page to get this comment's page number //return ceil( ( $oldercoms + 1 ) / $args['per_page'] ); // Azz REVERSE COMMENT LINK return ceil( ( $oldercoms - 1 ) / $args['per_page'] )+1; /** * - Azz */ |
По коду понятно, что оригинальный код закомменчен, харкод помечен Azz . В таком виде все отлично работает, но костыль жутко кривой и всё слетит при обновлении Wordress, если обновление затронет эти два файла comment.php и comment-template.php.