Ну, я наконец-то понял это, частично благодаря комментарию Нупула выше, который сказал, что: «Вы можете сначала получить все комментарии верхнего уровня за один раз, а затем вложенные комментарии (все) во втором раунде и заполнитьваш контент соответственно.Я действительно попробовал этот вариант безуспешно, но это побудило меня упорствовать ...
Для справки и надеюсь, что это может кому-то помочь в будущем, вот как я это исправил. Два отдельных запроса MySQL извлечение первых комментариев верхнего уровня и, во-вторых, вложенных комментариев (эти запросы отформатированы для WordPress.)
$comments = $wpdb->get_results($wpdb->prepare("
SELECT *
FROM $wpdb->comments
WHERE comment_post_ID = %d AND comment_approved = '1' AND comment_parent = '0'
ORDER BY comment_date ASC
LIMIT %d
",etc,etc));
$replies = $wpdb->get_results($wpdb->prepare("
SELECT *
FROM $wpdb->comments
WHERE comment_post_ID = %d AND comment_approved = '1' AND comment_parent <> '0'
ORDER BY comment_date ASC
LIMIT %d
",etc,etc));
Затем я вхожу в свой основной цикл комментариев (FOREACH), ища комментариев верхнего уровня * только 1013 *.В этом цикле внизу я вхожу во вложенный цикл IF, ища вложенные комментарии, где
$ reply-> comment_parent == $ comment-> comment_ID (сравнивая мои 2 запроса MySQL))
и, если true, корректирую $ comments так, чтобы он равнялся $ answers , чтобы мои вложенные комментарии корректно отображались в WordPress.Затем я возвращаю значение $ comments в исходное состояние и выхожу из моего вложенного цикла комментариев обратно в основной FOREACH.
Возможно, в моих рассуждениях или казни есть недостатки, но это работает как шарм!Конечно, это не предусматривает дополнительных вложенных уровней, и все вложенные комментарии пишутся один за другим, даже если они являются ответами друг другу, но для меня этого вполне достаточно!
Для демонстрации, http://www.vincentmounier.com/blog2/ и нажмите на любую из ссылок «Показать комментарии» внизу сообщений.Нупуль, еще раз спасибо за мотивацию!