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

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

Сообщение Anonymous »

Я создал новую роль под названием «Оптовый торговец». Роль работает должным образом.

Я также создал настраиваемое поле цены под названием «Цена оптового продавца». Это также работает так, как ожидалось.

Я проверяю роль пользователя, если он назначен оптовиком, я сообщаю ему специальную цену продукта (если она заполнена). У меня все работает, но я не могу понять финальную часть. Как получить текущий идентификатор продукта, получить оптовую цену и назначить ее. Мой код function.php приведен ниже:

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

/* Custom user roles */
add_role( 'wholesaler', 'Wholesaler', get_role( 'customer' )->capabilities );

add_action( 'woocommerce_product_options_pricing', 'action_woocommerce_product_options_pricing', 10, 0 );

/* Add custom wholesaler price field to general page */
function action_woocommerce_product_options_pricing() {
woocommerce_wp_text_input( array(
'id' => 'wholesaler_price',
'class' => 'wc_input_price short',
'label' => __( 'Wholesaler price', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')',
) );
}

// Save Fields
function action_woocommerce_admin_process_product_object( $product ) {
if( isset($_POST['wholesaler_price']) ) {
$product->update_meta_data( 'wholesaler_price', sanitize_text_field( $_POST[ 'wholesaler_price'] ) );
}
}
add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 );

/* Custom prices by user role */
add_filter('woocommerce_get_price', 'custom_price_assign', 10, 2);

function custom_price_assign($price, $product) {
if (!is_user_logged_in()) return $price;

// Check if the user has a role of wholesaler
if (check_user_role('wholesaler')){
$price = $price; // Assign wholesale price for product (if it is set for that product)
}

return $price;
}

/* Check user role */
function check_user_role($role = '',$user_id = null){
if ( is_numeric( $user_id ) )
$user = get_user_by( 'id',$user_id );
else
$user = wp_get_current_user();

if ( empty( $user ) )
return false;

return in_array( $role, (array) $user->roles );
}
Я могу предложить оптовику фиксированный процент, но это не моя цель.

Подробнее здесь: https://stackoverflow.com/questions/624 ... oocommerce
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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