Программно добавить обзор продукта с рейтингами в Woocommerce

Название говорит само за себя. Я знаю, что обзоры - это стандартный тип сообщений в 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 - это тот, который связывает комментарий с любым типом сообщений

kashalo 31.08.2018 23:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
3 177
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

С ключом '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.

Большое спасибо за помощь и отзывы, господа. Я очень ценю это.

Rob Gelhausen 06.09.2018 18:31

Принятый ответ не является полным, поскольку вопрос содержит как привязать его к конкретному товару. Также тип комментария должен быть заселен как обзор. Если обзор не привязан к продукту, схема 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 вы можете редактировать сами, если хотите.

Большой! Теперь мой плагин работает как положено! Мета продукта отсутствует. Но помните, что этот подход следует использовать только при создании продукта, поскольку в противном случае счетчики начинают не совпадать.

cavameta 10.09.2020 09:35

Другие вопросы по теме