به عنوان یک فریلنسر توسعه WooCommerce، هر روز بسیاری از عملیات کدنویسی را تکرار می کنم که باعث می شود وقتم را تلف کنم. یکی از آنها این است: “چگونه می توان ____ را در صورت داشتن متغیر/object $order؟”
به عنوان مثال، “چگونه می توانم کل سفارش را دریافت کنم”؟ یا “چگونه می توانم اقلام سفارش را دریافت کنم”؟ یا شاید تاریخ های سفارش، شناسه مشتری، اطلاعات صورتحساب، روش پرداخت، وضعیت سفارش، و غیره… امیدواریم این مقاله به شما کمک کند در زمان خود نیز صرفه جویی کنید!
همانطور که در مقالات دیگر دیدیم، اطلاعات محصول را از شی $product و اطلاعات سبد خرید را از شی $cart دریافت کنید، همیشه نمی توانید به متغیر $order دسترسی مستقیم داشته باشید.
گاهی اوقات ممکن است برای مثال $order_id را در دسترس داشته باشید. در آن سناریو، میتوانید شی سفارش را با تابع wc_get_order WooCommerce دریافت کنید.
همچنین اگر در قالب ایمیل هستید، می توانید اطلاعات $order را به دست آورید. این می تواند برای نمایش اطلاعات $order اضافی در ارتباطات تراکنشی شما یا فعال کردن عملکردهای سفارشی مفید باشد. در هر صورت، لذت ببرید!
1. شما به متغیر $order دسترسی دارید
هوک ها (do_action و application_filters) از آرگومان های اضافی استفاده می کنند که به تابع منتقل می شوند. اگر آنها به شما اجازه می دهند از شیء “$order” استفاده کنید، شما در تجارت هستید. در اینجا نحوه دریافت تمام اطلاعات سفارش آمده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
// Get Order ID and Key $order->get_id(); $order->get_order_key(); // Get Order Totals $order->get_formatted_order_total(); $order->get_cart_tax(); $order->get_currency(); $order->get_discount_tax(); $order->get_discount_to_display(); $order->get_discount_total(); $order->get_total_fees(); $order->get_formatted_line_subtotal(); $order->get_shipping_tax(); $order->get_shipping_total(); $order->get_subtotal(); $order->get_subtotal_to_display(); $order->get_tax_location(); $order->get_tax_totals(); $order->get_taxes(); $order->get_total(); $order->get_total_discount(); $order->get_total_tax(); $order->get_total_refunded(); $order->get_total_tax_refunded(); $order->get_total_shipping_refunded(); $order->get_item_count_refunded(); $order->get_total_qty_refunded(); $order->get_qty_refunded_for_item(); $order->get_total_refunded_for_item(); $order->get_tax_refunded_for_item(); $order->get_total_tax_refunded_by_rate_id(); $order->get_remaining_refund_amount(); // Get and Loop Over Order Items foreach ( $order->get_items() as $item_id => $item ) { $product_id = $item->get_product_id(); $variation_id = $item->get_variation_id(); $product = $item->get_product(); // see link above to get $product info $product_name = $item->get_name(); $quantity = $item->get_quantity(); $subtotal = $item->get_subtotal(); $total = $item->get_total(); $tax = $item->get_subtotal_tax(); $tax_class = $item->get_tax_class(); $tax_status = $item->get_tax_status(); $allmeta = $item->get_meta_data(); $somemeta = $item->get_meta( '_whatever', true ); $item_type = $item->get_type(); // e.g. "line_item", "fee" } // Other Secondary Items Stuff $order->get_items_key(); $order->get_items_tax_classes(); $order->get_item_count(); $order->get_item_total(); $order->get_downloadable_items(); $order->get_coupon_codes(); // Get Order Lines $order->get_line_subtotal(); $order->get_line_tax(); $order->get_line_total(); // Get Order Shipping $order->get_shipping_method(); $order->get_shipping_methods(); $order->get_shipping_to_display(); // Get Order Dates $order->get_date_created(); $order->get_date_modified(); $order->get_date_completed(); $order->get_date_paid(); // Get Order User, Billing & Shipping Addresses $order->get_customer_id(); $order->get_user_id(); $order->get_user(); $order->get_customer_ip_address(); $order->get_customer_user_agent(); $order->get_created_via(); $order->get_customer_note(); $order->get_address_prop(); $order->get_billing_first_name(); $order->get_billing_last_name(); $order->get_billing_company(); $order->get_billing_address_1(); $order->get_billing_address_2(); $order->get_billing_city(); $order->get_billing_state(); $order->get_billing_postcode(); $order->get_billing_country(); $order->get_billing_email(); $order->get_billing_phone(); $order->get_shipping_first_name(); $order->get_shipping_last_name(); $order->get_shipping_company(); $order->get_shipping_address_1(); $order->get_shipping_address_2(); $order->get_shipping_city(); $order->get_shipping_state(); $order->get_shipping_postcode(); $order->get_shipping_country(); $order->get_address(); $order->get_shipping_address_map_url(); $order->get_formatted_billing_full_name(); $order->get_formatted_shipping_full_name(); $order->get_formatted_billing_address(); $order->get_formatted_shipping_address(); // Get Order Payment Details $order->get_payment_method(); $order->get_payment_method_title(); $order->get_transaction_id(); // Get Order URLs $order->get_checkout_payment_url(); $order->get_checkout_order_received_url(); $order->get_cancel_order_url(); $order->get_cancel_order_url_raw(); $order->get_cancel_endpoint(); $order->get_view_order_url(); $order->get_edit_order_url(); // Get Order Status $order->get_status(); // Get Thank You Page URL $order->get_checkout_order_received_url(); |
2. شما به متغیر $order_id دسترسی دارید
اگر به شناسه سفارش دسترسی دارید (یک بار دیگر، معمولاً do_action یا application_filters ممکن است این را به شما بدهد)، ابتدا باید شیء سفارش را دریافت کنید. سپس دقیقاً همان کارهای فوق را انجام دهید و وضعیت سفارش، صورتحساب سفارش، ارسال سفارش و غیره را دریافت کنید.
1 2 3 4 5 6 7 8 9 10 11 |
// Get $order object from order ID $order = wc_get_order( $order_id ); // Now you have access to (see above)... if ( $order ) { $order->get_formatted_order_total( ); // etc. // etc. } |
3. شما به متغیر $email دسترسی دارید
اگر با ایمیلهای WooCommerce کار میکنید، اغلب شی $email را به عنوان پارامتر در دسترس خواهید داشت. برای به دست آوردن شی از آن، به یک مرحله اضافی نیاز دارید. سپس دقیقاً همان کارهای فوق را انجام دهید.
1 2 3 4 5 6 7 8 9 10 11 12 |
// Get $order object from $email $order = $email->object; // Now you have access to (see above)... if ( $order ) { $order->get_id(); $order->get_formatted_order_total( ); // etc. // etc. } |