Obtener todos los comentarios/reseñas de WooCommerce
Lo que necesito lograr es obtener todos los comentarios de todos los productos en WooCommerce.
Esto no me devuelve NINGÚN comentario...
<?php $comments = get_comments( array( 'post_type' => 'product') ); ?>
Sin embargo
<?php $comments = get_comments( array( 'post_id' => '4169') );
Me devuelve los comentarios para un ID de producto específico. ¿Cómo consultar TODOS los comentarios?
Gracias de antemano.

Por favor prueba esto:
$args = array(
'number' => 100,
'status' => 'approve',
'post_status' => 'publish',
'post_type' => 'product'
);
$comments = get_comments( $args );
donde puedes editar el número de comentarios según tus necesidades.
Depuración:
¿Quizás algo lo está modificando mediante el hook pre_get_comments
?
Para depurarlo puedes revisar la consulta SQL con:
global $wpdb;
printf( '<pre>%s</pre>', $wpdb->last_query );
donde agregas esto directamente debajo del fragmento de código get_comments()
anterior.
También revisa la pantalla edit-comments.php
para ver si los comentarios aparecen allí y su estado.

Siempre lo hago de esta manera y funciona, es como lo hace el widget. El problema debe ser otra cosa. @kroma

Aquí está el código fuente de ese widget

Sí, ahora veo que WC Recent Reviews tampoco muestra resultados... ¿alguna idea?

Por cierto, ¿las reseñas de WooCommerce deberían aparecer también en la sección nativa de Comentarios en el admin de WP?

¿Podrías compartir la consulta SQL? ¿Viste los comentarios en la pantalla edit-comments.php
?

@birgire - gracias por la depuración. Descubrí que WPML estaba causando problemas - Los Productos no estaban marcados como traducibles. Después de marcarlos como traducibles funciona correctamente. +1

Necesitarás recorrer todos los comentarios y mostrarlos. Algo como esto hará el trabajo:
$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;
También puedes pasar el parámetro 'number' si quieres especificar cuántos comentarios mostrar. Por defecto es null (sin límite).

Woocommerce anula las consultas de comentarios, lo que parece afectar a WC_Comment_Query y get_comments(), al filtrar directamente los comentarios de la tienda en el SQL.
Al agregar lo siguiente antes de usar WC_Comment_Query, se evitó que los comentarios de la tienda fueran excluidos en mi consulta.
remove_filter('comments_clauses', array( 'WC_Comments' ,'exclude_order_comments'), 10, 1 );
