Вопрос или проблема
Я работаю над функцией, которая загружает больше отзывов Woocommerce, когда нажата кнопка. У меня всё работает, кроме того, что ответы от владельца магазина не отображаются под отзывом.
Я провел некоторое тестирование и обнаружил следующее: когда владелец магазина отвечает на отзыв, отображаемый при первоначальной загрузке страницы, ответ показывается.
Когда кнопка нажата, чтобы загрузить больше отзывов – даже если на заднем плане сайта есть дочерний элемент – дети не отображаются.
Вот мои аргументы запроса для комментариев:
$args = array(
'number' => 10,
'type' => array( 'review', 'comment' ), // Пробовал "comment", потому что ответ - это комментарий, а не отзыв
'status' => 'approve',
'post_id' => $_POST['id'],
'meta_query' => array(
array(
'key' => 'rating', // Необходимо для фильтрации по рейтингу
'value' => $_POST['rating'],
'compare' => '=',
'type' => 'NUMERIC'
)
),
);
Я пытался закомментировать meta_query выше, но все равно безуспешно.
Основная проблема:
Если я var_dump(get_comment(parent_comment))
, он говорит, что нет детей. Что я делаю не так?
Ответ или решение
Если вы сталкиваетесь с проблемой отсутствия отображения дочерних комментариев в wp_comment_query
, особенно при использовании Woocommerce для загрузки отзывов, возможно, есть несколько аспектов, которые стоит рассмотреть и исправить. Давайте подробно разберем возможные причины проблемы и предложим решения, используя подход FOREST.
Фокус на Проблеме (Focus on the Issue)
Основная проблема заключается в том, что после загрузки дополнительных отзывов по клику на кнопку, ответы от владельца магазина не отображаются. При этом, при начальной загрузке страницы ответы видны. Вы пытались использовать var_dump(get_comment(parent_comment))
, который говорит, что у основного комментария нет детей, и также попробовали исключить meta_query
— но это не помогло.
Обсуждение Технических Моментов (Offer Technical Insights)
-
Проверка правильности аргументов в
wp_comment_query
:- Убедитесь, что ваш аргумент
'post_id' => $_POST['id']
корректно получает идентификатор поста, с которым связаны комментарии. Если передается неправильный ID, это может привести к тому, что комментарии вообще не загружаются.
- Убедитесь, что ваш аргумент
-
Учет параметра ‘hierarchical’
- При использовании
wp_comment_query
важно учитывать иерархическую структуру комментариев. Убедитесь, что ваш запрос курирует и возвращает ответы, используя'hierarchical' => true
в настройках WordPress.
- При использовании
-
Корректировка аргументов запроса:
- Попробуйте изменить аргументы для загрузки комментариев, добавив
'parent' => 0
для загрузки только родительских комментариев, и затем использовать отдельный запрос или функцию для загрузки их дочерних комментариев.
$args = array( 'number' => 10, 'type' => 'comment', 'status' => 'approve', 'post_id' => $_POST['id'], 'parent' => 0, // Получить только родительские комментарии 'meta_query' => array( array( 'key' => 'rating', // Только если рейтинг используется в меню фильтрации 'value' => $_POST['rating'], 'compare' => '=', 'type' => 'NUMERIC' ) ), );
- Попробуйте изменить аргументы для загрузки комментариев, добавив
Решение Проблемы (Resolve the Issue)
Если c вашими текущими аргументами не получается, попробуйте найти уникальное решение, как в коде ниже, чтобы загрузить дочерние комментарии:
- Получите все основными отзывы с помощью вашего основного запроса.
- Используйте дополнительный запрос с
'parent__in' => array(<ID основного отзыва>)
для загрузки дочерних комментариев отдельно. - Комбинируйте основной и дочерний версии отображения в соответствии с вашими требованиями.
Применение SEO Оптимизации
Для увеличения видимости решения в поисковых системах, убедитесь, что вы используете ключевые слова в заголовках и тексте, такие как "отзывы Woocommerce", "дочерние комментарии WordPress", и "иерархия комментариев".
Заключение
Проблемы с иерархией комментариев в WordPress могут быть вызваны рядом факторов, таких как неверные аргументы запроса или неправильно проработанная иерархическая логика. Рассмотрите возможность применения предложенных подходов, чтобы наладить корректное отображение ответов на отзывы и обеспечить функциональность, которая эффективно отвечает требованиям пользователей.