Я пытаюсь получить последний комментарий / отзыв о любом продукте на моей тестовой странице, пока я рассматриваю его как сообщение и получил что-то вроде этого:
<?php
$args = array ('post_type' => 'product');
$comments = get_comments( $args );
wp_list_comments( array( 'callback' => 'woocommerce_comments' ), $comments);
?>
<?php get_comments( $args ); ?>
Буду признателен за любую оказанную помощь.
Попробуй это:
$number_of_reviews = 10; //How many reviews you want to retrieve
$reviews = get_comments( array( 'number' => $number_of_reviews, 'status' => 'approve', 'post_status' => 'publish', 'post_type' => 'product' ) );
echo "<ul>";
foreach ( (array) $reviews as $review ) {
$_product = WC_get_product( $review->comment_post_ID );
$rating = intval( get_comment_meta( $review->comment_ID, 'rating', true ) );
echo '<li style="list-style:none"><a href="' . esc_url( get_comment_link( $review->comment_ID ) ) . '">';
echo $_product->get_title() . '</a> ';
for($i=0;$i<$rating;$i++){
echo "<span style='color:grey'>★</span>";
}
echo "<p>".$review->comment_content." - ".get_comment_author($review->comment_ID)."</p>";
echo '</li><br><br>';
}
echo "</ul>";
Замечания: Вы всегда можете изменить свой код в соответствии с вашими потребностями и CSS.
Вот что я сделал, чтобы получить последний комментарий к продукту:
function display_product_review() {
global $product;
$comments = get_approved_comments( $product->id );
$product_link = '/product/' . $product->post->post_name . "/#tab-reviews/";
if ( !empty ($comments) ) {
echo $comments[0]->comment_content . '<br><a href="'. $product_link . '">Read more reviews...</a>';
} else {
echo "There are no reviews for this product yet. Would you like to <a href='" . $product_link ."'>add your own review</a>?";
}
}
Единственным недостатком является то, что get_approved_comments имеет только один параметр, который является post_id, поэтому он проверяет все отзывы, сделанные для продукта. Возможно, это не самое чистое решение, но оно сработало для меня.