Используйте настраиваемое поле продукта в качестве процента скидки для определенной роли пользователя в WooCommerce.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Используйте настраиваемое поле продукта в качестве процента скидки для определенной роли пользователя в WooCommerce.

Сообщение Anonymous »

Я хочу отображать и применять процентную скидку на продукты на основе роли пользователя «член клуба» и процента, заполненного в мета-поле «clubmember_price».
Я использовал код ниже для процентной скидки (на корзину, а не на товары), которая работает нормально.

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

/* discount clubmembers */
add_action( 'woocommerce_cart_calculate_fees', 'discount_based_on_user_role', 20, 1 );
function discount_based_on_user_role( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return; // Exit

// only for 'clubmember' role
if ( ! current_user_can('clubmember') )
return; // Exit

// Kortings percentage
$percentage = 10

$discount = $cart->get_subtotal() * $percentage / 100; // Calculation

// Applying discount
$cart->add_fee( sprintf( __("Clubmember discount (%s)", "woocommerce"), $percentage . '%'), -$discount, true );
}
При оформлении заказа отображается сообщение «скидка для членов клуба», что выглядит хорошо. Моя проблема сейчас в том, что приведенный выше код применяет скидку ко всей корзине.
Мне нужна скидка на сам продукт, но ТОЛЬКО если заполнено мета-поле «clubmember_price». Для этого я заменил код на этот:

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

/* Custom prices by user role */
add_filter('woocommerce_product_get_price', 'custom_price_assign', 10, 2);
add_filter('woocommerce_product_variation_get_price', 'custom_price_assign', 10, 2); // For product variations (optional)

function custom_price_assign( $price, $product ) {
// Check if the user has a role of wholesaler
if ( current_user_can('clubmember') && $clubmember_price = $product->get_meta('clubmember_price') ){
return $price * (100 - $clubmember_price) / 100;
}
return $price;
}
Проблема в том, что я нигде не вижу скидки. Таким образом, пользователь не увидит, что у него «сниженная» цена, фрагмент просто меняет цену.
Я хочу отображать обычную цену и показывать скидку на странице продукта, и в корзине/оформлении заказа.
Я пытался каким-либо образом объединить два кода, но, поскольку я новичок в PHP, я не могу заставить его работать. У меня такое чувство, что мне нужно использовать «если» между двумя функциями, но я не могу понять, как и возможно ли это.
Я действительно пытаюсь понять, как это работает. и иметь возможность самому писать эти фрагменты в будущем. Если кто-нибудь сможет объяснить, что я упускаю, было бы здорово!

Подробнее здесь: https://stackoverflow.com/questions/768 ... le-in-wooc
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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