Расширение поля купона WooCommerce - PullRequest
0 голосов
/ 29 октября 2018

Я добавил новый пользовательский тип записи 'giftcard' и расширил простой продукт WooCommerce, добавив флажок 'Gift Card'

Всякий раз, когда статус заказа изменяется на «обработка» и он содержит подарочную карту типа продукта, он создает новую публикацию подарочной карты, используя следующий код

function status_order_processing( $order_id ) {
   $order = wc_get_order( $order_id );
   $items = $order->get_items();

   foreach ( $items as $item ) {
    $is_gift_card = get_post_meta( $item['product_id'], '_woo_giftcard', true );

    if($is_gift_card == 'yes'){
$token = base64_encode(openssl_random_pseudo_bytes(32));
            $token = bin2hex($token);
            $hyphen = chr(45);
    $uuid =  substr($token, 0, 8).$hyphen
            .substr($token, 8, 4).$hyphen
            .substr($token,12, 4).$hyphen
            .substr($token,16, 4).$hyphen
            .substr($token,20,12);

   $gift_card = array(
    'post_title'    => $uuid,
    'post_status'   => 'publish',
    'post_type'     => 'giftcard',
);
   $gift_card_id = wp_insert_post( $gift_card, $wp_error );
   update_post_meta( $gift_card_id, 'woo_gift_card_amount', (int)$item['total'] );

}
}
add_action( 'woocommerce_order_status_processing', 'status_order_processing' );

Имя нового сообщения - это токен, сгенерированный в приведенном выше коде, и общее количество сохраненных элементов в метаполе 'woo_gift_card_amount'.

Есть ли способ, если я введу токен типа подарочной карты в поле купона, и он вычтет сумму из суммы Заказа в соответствии с мета-полем 'woo_gift_card_amount' этого сообщения.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 30 октября 2018

Купоны - также пользовательский пост. Чтобы использовать токен / uuid для подарочной карты в качестве купона woocommerce, вам необходимо вставить его в качестве нового сообщения в типе сообщения shop_coupon.

Быстрый пример (это должно входить в вашу функцию status_order_processing, или вы можете использовать отдельную функцию - в зависимости от того, что вам подходит):

$coupon_code = $uuid;
$amount = (int)$item['total'];
$discount_type = 'fixed_cart'; //available types: fixed_cart, percent, fixed_product, percent_product

$coupon = array(
    'post_title' => $coupon_code,
    'post_content' => '',
    'post_status' => 'publish',
    'post_author' => 1,
    'post_type' => 'shop_coupon'
);

$new_coupon_id = wp_insert_post( $coupon );

if ( $new_coupon_id ) {
    //add coupon/post meta
    update_post_meta($new_coupon_id, 'discount_type', $discount_type);
    update_post_meta($new_coupon_id, 'coupon_amount', $amount);
    //update_post_meta($new_coupon_id, 'expiry_date', $expiry_date);
    //update_post_meta($new_coupon_id, 'usage_limit', '1');
    //update_post_meta($new_coupon_id, 'individual_use', 'no');
    //update_post_meta( $new_coupon_id, 'product_ids', '' );
    //update_post_meta( $new_coupon_id, 'exclude_product_ids', '' );
    //update_post_meta( $new_coupon_id, 'usage_limit', '' );
    //update_post_meta( $new_coupon_id, 'expiry_date', '' );
    //update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' );
    //update_post_meta( $new_coupon_id, 'free_shipping', 'no' );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...