Условно установите конкретную цену продукта на странице продукта и в корзине Woocommerce.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Условно установите конкретную цену продукта на странице продукта и в корзине Woocommerce.

Сообщение Anonymous »

В Woocommerce я хотел бы изменить цену определенного продукта (в данном случае с идентификатором 87) как на странице одного продукта, так и для связанных элементов корзины.

Цену продукта необходимо увеличить на 10 долларов США, но только на одной странице продукта и только снаружи (чтобы внутренняя цена или цена, установленная в Woocommerce, не менялись).

Кроме того, эту цену также следует изменить в корзине, но только в том случае, если товары из определенной категории НЕ находятся в корзине.

Контекст: если кто-то покупает это за продукт отдельно, с них должна взиматься плата на 10 долларов США выше обычной цены. Если кто-то покупает этот товар вместе с товарами из определенной категории, с него должна взиматься обычная цена.
По сути, это инвертированная скидка (я не хочу использовать функцию купона для взимания дополнительной платы).

Что касается функциональности корзины, то пока она у меня есть, но она не работает — цена корзины составляет 75 долларов США, тогда как текущая обычная/базовая цена составляет 45 долларов США. Понятия не имею, откуда взялось 75, когда должно быть 55.

Код: Выделить всё

function wc_cart_custom_price( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

// set our flag to be false until we find a product in that category
$cat_check = false;

// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

$product = $cart_item['data'];

// replace 'your-category' with your category's slug
if ( has_term( 'your-category', 'product_cat', $product->id ) ) {
$cat_check = true;
// break because we only need one "true" to matter here
break;
}
}

// if a product in the cart is in our category, stop there and don't change price
if ( $cat_check ) {
return;
}
// else continue and alter the product price
else if ( $cart_item['product_id'] == 87 ) {
// we have the right product, do what we want
$price = $cart_item['data']->get_price(); // Get the product price
$new_price = $price + 10; // the calculation
$cart_item['data']->set_price( $new_price ); // Set the new price
}
}
add_action( 'woocommerce_before_calculate_totals', 'wc_cart_custom_price' );
Мой код для изменения цены на странице продукта на данный момент:

Код: Выделить всё

function wc_change_product_price($price, $product) {
if ( is_single('87') ) {
$post_id = $product->id;

$regular_price = get_post_meta( $post_id, '_regular_price', true);
$custom_value = ( $regular_price + 10 );
$price = $custom_value;

return $price;
}
}
add_filter('woocommerce_get_price', 'wc_change_product_price', 99);
Это катастрофа, вызывающая ошибку сервера 500. Что я делаю неправильно? Любая помощь приветствуется.

Ссылки:

Изменение цен на товары в корзине в WooCommerce версии 3.0
https://rudrastyh.com/woocommerce/chang ... -cart.html

https:// www.skyverge.com/blog/checking-woocomme ... -category/

Подробнее здесь: https://stackoverflow.com/questions/505 ... oduct-page
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»