Название говорит само за себя. Я знаю, что обзоры - это стандартный тип сообщений в Wordpress. Я включил код, чтобы добавить комментарий.
Проблема, однако, в том, что я не понимаю, как дать этому комментарию рейтинг и как привязать его к конкретному продукту. Когда я использую comment_post_ID, похоже, что комментарий (обзор) не назначается правильному сообщению.
$time = current_time('mysql');
$data = array(
'comment_post_ID' => 1,
'comment_author' => 'admin',
'comment_author_email' => '[email protected]',
'comment_author_url' => 'http://',
'comment_content' => 'content here',
'comment_type' => '',
'comment_parent' => 0,
'user_id' => 1,
'comment_author_IP' => '127.0.0.1',
'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
'comment_date' => $time,
'comment_approved' => 1,
);
wp_insert_comment($data);






С ключом 'comment_post_ID' будет отображаться ваш комментарий, поэтому желаемый идентификатор продукта
Затем вы можете использовать специальную функцию WordPress update_comment_meta() для добавления рейтинга, например:
update_comment_meta( $comment_id, 'rating', 3 ); // The rating is an integer from 1 to 5
Таким образом, ваш код будет похож на (куда$product_idявляется идентификатором целевого продукта для этого обзора):
$comment_id = wp_insert_comment( array(
'comment_post_ID' => 37, // <=== The product ID where the review will show up
'comment_author' => 'LoicTheAztec',
'comment_author_email' => '[email protected]', // <== Important
'comment_author_url' => '',
'comment_content' => 'content here',
'comment_type' => '',
'comment_parent' => 0,
'user_id' => 5, // <== Important
'comment_author_IP' => '',
'comment_agent' => '',
'comment_date' => date('Y-m-d H:i:s'),
'comment_approved' => 1,
) );
// HERE inserting the rating (an integer from 1 to 5)
update_comment_meta( $comment_id, 'rating', 3 );
Протестировано и работает по назначению.
The author email and the user ID need to be some existing ones.
Большое спасибо за помощь и отзывы, господа. Я очень ценю это.
Принятый ответ не является полным, поскольку вопрос содержит как привязать его к конкретному товару. Также тип комментария должен быть заселен как обзор. Если обзор не привязан к продукту, схема Yoast и прочее не заполните все переменные, и Google выдаст вам предупреждение о разметке схема.
Добавьте это к принятому ответу:
'comment_type' => 'review'
Также привяжите к продукту (вашему $post_id), отметьте значения типа bool и массивы.
if ($comment_id) update_comment_meta($comment_id, 'rating', 5);
if ($comment_id) update_comment_meta($comment_id, 'verified', 1);
if ($comment_id) update_post_meta($post_id, '_wc_average_rating', '5.00');
if ($comment_id) update_post_meta($post_id, '_wc_review_count', '1');
if ($comment_id) update_post_meta($post_id, '_wc_rating_count', array(1));
Теперь Google принимает это как прелесть с Woocommerce 3 и 2020 года. @Loictheastec вы можете редактировать сами, если хотите.
Большой! Теперь мой плагин работает как положено! Мета продукта отсутствует. Но помните, что этот подход следует использовать только при создании продукта, поскольку в противном случае счетчики начинают не совпадать.
ваш код должен быть в порядке, вы проверяли, вставляете ли вы код комментария в базу данных? поскольку
comment_post_ID- это тот, который связывает комментарий с любым типом сообщений