Я создал несколько переменных продуктов в Woocommerce, группируя аналогичные простые продукты, которые имели оценки от отзыва клиентов для плагина Woocommerce. Но я удалил простые продукты, из которых были унаследованы отзывы, и они были потеряны. < /P>
Есть ли способ сделать это через базу данных? Могу ли я унаследовать отзывы, каким -то образом запрашивая их из базы данных, даже если продукты больше не находятся на панели WordPress? Я уже проконсультировался с документацией для этого плагина, но я ничего об этом не нашел.add_filter( 'woocommerce_product_get_rating_counts', 'fusionar_valoraciones_heredadas', 10, 2 );
add_filter( 'woocommerce_product_get_review_count', 'fusionar_valoraciones_heredadas', 10, 2 );
add_filter( 'woocommerce_product_get_average_rating', 'fusionar_valoraciones_heredadas', 10, 2 );
function fusionar_valoraciones_heredadas( $value, $product ) {
// Tabla de asignación: 'ID del producto nuevo' => ['IDs de los productos antiguos']
$productos_a_fusionar = [
24359 => [326, 327], // Nuevo producto con ID 23736 hereda de los productos 326 y 327
24224 => [559, 972],
24192 => [666, 667]
];
// Comprobamos si el ID del producto actual está en nuestra tabla de asignación
if ( array_key_exists( $product->get_id(), $productos_a_fusionar ) ) {
// Si es así, obtenemos los IDs antiguos para este producto
$ids_antiguos = $productos_a_fusionar[ $product->get_id() ];
$rating_count = [];
$review_count = 0;
foreach ( $ids_antiguos as $old_id ) {
$old_product = wc_get_product( $old_id );
if ( $old_product ) {
foreach ( $old_product->get_rating_counts() as $rating => $count ) {
if ( ! isset( $rating_count[ $rating ] ) ) {
$rating_count[ $rating ] = 0;
}
$rating_count[ $rating ] += $count;
}
$review_count += $old_product->get_review_count();
}
}
if ( current_filter() == 'woocommerce_product_get_rating_counts' ) {
return $rating_count;
}
if ( current_filter() == 'woocommerce_product_get_review_count' ) {
return $review_count;
}
if ( current_filter() == 'woocommerce_product_get_average_rating' ) {
$total = 0; $count = 0;
foreach ( $rating_count as $rating => $num ) {
$total += $rating * $num;
$count += $num;
}
return $count ? round( $total / $count, 2 ) : 0;
}
}
return $value;
}
< /code>
Я сделал больше тестов, поскольку «звезды обзоров» не были видны, я думал, что это было связано с кодом ... но это было потому, что продукты были просты, так как моя функция называет их идентификатором. База данных, но я не очень знаком с SQL, так что я колебаюсь. < /p>
For the new product 23856, it inherits the reviews of 998 and 999
UPDATE wp_comments
SET comment_post_ID = 23856
WHERE comment_post_ID IN (998, 999);
< /code>
Мне также удалось найти эту идею, но я не знаю, жизнеспособно ли это. Я хотел бы убедиться, что код верен. Я не могу загрузить резервную копию (что у меня есть), так как магазин сильно изменился с тех пор, как я удалил продукты. < /P>
SELECT
comment_ID,
comment_post_ID,
comment_author,
comment_content
FROM
wp_comments
WHERE
comment_type = 'review'
AND
comment_post_ID IN (526, 527);
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-products
Как унаследовать рейтинги на продуктах с переменной woocommerce? ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1759180421
Anonymous
Я создал несколько переменных продуктов в Woocommerce, группируя аналогичные простые продукты, которые имели оценки от отзыва клиентов для плагина Woocommerce. Но я удалил простые продукты, из которых были унаследованы отзывы, и они были потеряны. < /P>
Есть ли способ сделать это через базу данных? Могу ли я унаследовать отзывы, каким -то образом запрашивая их из базы данных, даже если продукты больше не находятся на панели WordPress? Я уже проконсультировался с документацией для этого плагина, но я ничего об этом не нашел.add_filter( 'woocommerce_product_get_rating_counts', 'fusionar_valoraciones_heredadas', 10, 2 );
add_filter( 'woocommerce_product_get_review_count', 'fusionar_valoraciones_heredadas', 10, 2 );
add_filter( 'woocommerce_product_get_average_rating', 'fusionar_valoraciones_heredadas', 10, 2 );
function fusionar_valoraciones_heredadas( $value, $product ) {
// Tabla de asignación: 'ID del producto nuevo' => ['IDs de los productos antiguos']
$productos_a_fusionar = [
24359 => [326, 327], // Nuevo producto con ID 23736 hereda de los productos 326 y 327
24224 => [559, 972],
24192 => [666, 667]
];
// Comprobamos si el ID del producto actual está en nuestra tabla de asignación
if ( array_key_exists( $product->get_id(), $productos_a_fusionar ) ) {
// Si es así, obtenemos los IDs antiguos para este producto
$ids_antiguos = $productos_a_fusionar[ $product->get_id() ];
$rating_count = [];
$review_count = 0;
foreach ( $ids_antiguos as $old_id ) {
$old_product = wc_get_product( $old_id );
if ( $old_product ) {
foreach ( $old_product->get_rating_counts() as $rating => $count ) {
if ( ! isset( $rating_count[ $rating ] ) ) {
$rating_count[ $rating ] = 0;
}
$rating_count[ $rating ] += $count;
}
$review_count += $old_product->get_review_count();
}
}
if ( current_filter() == 'woocommerce_product_get_rating_counts' ) {
return $rating_count;
}
if ( current_filter() == 'woocommerce_product_get_review_count' ) {
return $review_count;
}
if ( current_filter() == 'woocommerce_product_get_average_rating' ) {
$total = 0; $count = 0;
foreach ( $rating_count as $rating => $num ) {
$total += $rating * $num;
$count += $num;
}
return $count ? round( $total / $count, 2 ) : 0;
}
}
return $value;
}
< /code>
Я сделал больше тестов, поскольку «звезды обзоров» не были видны, я думал, что это было связано с кодом ... но это было потому, что продукты были просты, так как моя функция называет их идентификатором. База данных, но я не очень знаком с SQL, так что я колебаюсь. < /p>
For the new product 23856, it inherits the reviews of 998 and 999
UPDATE wp_comments
SET comment_post_ID = 23856
WHERE comment_post_ID IN (998, 999);
< /code>
Мне также удалось найти эту идею, но я не знаю, жизнеспособно ли это. Я хотел бы убедиться, что код верен. Я не могу загрузить резервную копию (что у меня есть), так как магазин сильно изменился с тех пор, как я удалил продукты. < /P>
SELECT
comment_ID,
comment_post_ID,
comment_author,
comment_content
FROM
wp_comments
WHERE
comment_type = 'review'
AND
comment_post_ID IN (526, 527);
Подробнее здесь: [url]https://stackoverflow.com/questions/79771780/how-to-inherit-ratings-on-woocommerce-variable-products[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия