Получить все комментарии/отзывы WooCommerce

31 окт. 2013 г., 12:08:54
Просмотры: 15.7K
Голосов: 0

Мне нужно получить все комментарии со всех товаров в WooCommerce.

Этот код не возвращает мне НИ ОДНОГО комментария...

<?php $comments = get_comments( array( 'post_type' => 'product') ); ?>

Однако

<?php $comments = get_comments( array( 'post_id' => '4169') );

Возвращает комментарии для конкретного ID товара. Как сделать запрос для ВСЕХ комментариев?

Заранее спасибо.

0
Все ответы на вопрос 3
10

Попробуйте это:

 $args = array( 
                'number'      => 100, 
                'status'      => 'approve', 
                'post_status' => 'publish', 
                'post_type'   => 'product' 
        );

 $comments = get_comments( $args );

где вы можете изменить количество комментариев по своему усмотрению.

Отладка:

Возможно, что-то изменяет запрос через хук pre_get_comments?

Для отладки вы можете проверить SQL-запрос с помощью:

 global $wpdb;
 printf( '<pre>%s</pre>', $wpdb->last_query );

где вы добавляете этот код сразу после фрагмента с get_comments().

Также проверьте экран edit-comments.php, отображаются ли там комментарии и их статус.

31 окт. 2013 г. 13:12:10
Комментарии

Все еще 0 результатов...

kroma kroma
31 окт. 2013 г. 13:33:41

И виджет WC Recent Reviews тоже показывает пустой список?

birgire birgire
31 окт. 2013 г. 13:47:46

Я всегда делаю так, и это работает, виджет делает то же самое. Проблема должна быть в чем-то другом. @kroma

Nicolai Grossherr Nicolai Grossherr
31 окт. 2013 г. 13:49:53

Вот исходный код этого виджета

birgire birgire
31 окт. 2013 г. 13:52:19

Да, теперь я вижу, что WC Recent Reviews тоже не показывают результаты... есть идеи?

kroma kroma
31 окт. 2013 г. 14:39:16

Кстати, должны ли отзывы WooCommerce также появляться в стандартном разделе Комментариев в админке WP?

kroma kroma
31 окт. 2013 г. 14:40:48

Пожалуйста, проверьте обновленный ответ.

birgire birgire
31 окт. 2013 г. 15:39:54

Может, поделитесь SQL-запросом? Вы видели комментарии на экране edit-comments.php?

birgire birgire
31 окт. 2013 г. 18:49:46

@birgire - спасибо за отладку. Выяснил, что проблемы создавал WPML - продукты не были отмечены как переводимые. После того как сделал их переводимыми, все заработало. +1

kroma kroma
1 нояб. 2013 г. 11:42:35

Отлично, рад слышать, что проблема решена, спасибо, что поделились причиной неполадки.

birgire birgire
1 нояб. 2013 г. 11:50:57
Показать остальные 5 комментариев
0

Вам нужно будет пройтись в цикле по всем комментариям и отобразить их. Вот пример кода, который это сделает:

        $args = array( 
            'status'      => 'approve', // только одобренные комментарии
            'post_status' => 'publish', // только опубликованные записи
            'post_type'   => 'product'  // тип записи - товар
        );

        $comments = get_comments( $args );

        foreach( $comments as $comment ) :
            echo( $comment->comment_author . '<br />' . $comment->comment_content);
        endforeach; 

Вы также можете передать параметр 'number', если хотите указать количество отображаемых комментариев. По умолчанию значение null (без ограничений).

28 нояб. 2018 г. 17:05:51
0

WooCommerce переопределяет запросы комментариев, что, по-видимому, влияет на WC_Comment_Query и get_comments(), фильтруя комментарии магазина непосредственно в SQL.

Добавление следующего кода перед использованием WC_Comment_Query предотвратило исключение комментариев магазина из моего запроса.

remove_filter('comments_clauses', array( 'WC_Comments' ,'exclude_order_comments'), 10, 1 );
10 июл. 2015 г. 09:38:34