Ottenere tutti i commenti/recensioni di WooCommerce
Quello che devo ottenere è recuperare tutti i commenti di tutti i prodotti in WooCommerce.
Questo non mi restituisce NESSUN commento...
<?php $comments = get_comments( array( 'post_type' => 'product') ); ?>
Tuttavia
<?php $comments = get_comments( array( 'post_id' => '4169') );
Mi restituisce i commenti per un ID prodotto specifico. Come posso interrogare TUTTI i commenti?
Grazie in anticipo.

Prova questo:
$args = array(
'number' => 100,
'status' => 'approve',
'post_status' => 'publish',
'post_type' => 'product'
);
$comments = get_comments( $args );
dove puoi modificare il numero di commenti in base alle tue esigenze.
Debug:
Forse qualcosa lo sta modificando tramite l'hook pre_get_comments
?
Per debug puoi controllare la query SQL con:
global $wpdb;
printf( '<pre>%s</pre>', $wpdb->last_query );
dove aggiungi questo direttamente sotto lo snippet di codice get_comments()
sopra.
Controlla anche la schermata edit-comments.php
per vedere se i commenti compaiono lì e il loro stato.

Lo faccio sempre così e funziona, è come se lo facesse il widget. Il problema deve essere qualcos'altro. @kroma

Qui trovi il sorgente di quel widget

Sì ora vedo che anche WC Recent Reviews non mostra risultati... qualche idea?

a proposito, le recensioni di woocommerce dovrebbero apparire anche nella sezione Commenti nativa nell'admin di WP?

Forse puoi condividere la query SQL? Hai visto i commenti nella schermata edit-comments.php
?

@birgire - grazie per il debug. Ho scoperto che WPML causava problemi - I prodotti non erano impostati come traducibili. Dopo averli resi traducibili funziona tutto bene. +1

Dovrai scorrere tutti i commenti e visualizzarli. Qualcosa come questo farà al caso tuo:
$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;
Puoi anche passare il parametro 'number' se vuoi specificare quanti commenti mostrare. Il valore predefinito è null (nessun limite).

WooCommerce sovrascrive le query dei commenti, cosa che sembra influenzare WC_Comment_Query e get_comments(), filtrando direttamente i commenti del negozio nell'SQL.
Aggiungere il codice seguente prima di utilizzare WC_Comment_Query ha impedito che i commenti del negozio venissero esclusi dalla mia query.
remove_filter('comments_clauses', array( 'WC_Comments' ,'exclude_order_comments'), 10, 1 );
