دریافت اطلاعات سفارشات ووکامرس از آبجکت Order
دریافت اطلاعات سفارشات ووکامرس از آبجکت order
اگر شما یک توسعه دهنده وردپرسی هستید قطعا در فرآیند برنامه نویسی قالب یا افزونه وردپرس برای سایتهای فروشگاهی با افزونه ووکامرس برخورد خواهید داشت. یکی از بخشهای مهم در توسعه قالب یا افزونههای مرتبط با ووکامرس داشتن اطلاعات سفارشات سایت است. من امیر طاهر هستم و در این مقاله در مورد گرفتن اطلاعات سفارشات ووکامرس از آبجکت order صحبت خواهیم کرد.
دسترسی به آبجکت order
زیر ساخت افزونه ووکامرس بطوری پیاده سازی شده که در قسمتهای مختلف بسته به نیاز ما به آبجکت های مختلفی دسترسی خواهیم داشت. به عنوان مثال آبجکت product$ برای دسترسی به اطلاعات محصول، آبجکت cart$ برای دسترسی به اطلاعات سبد خرید و آبجکت order$ برای دسترسی به اطلاعات سفارشات است. البته در قدم اول باید با استفاده از توابع و یا کلاسهای وردپرسی به این آبجکت در قسمت مورد نظر دسترسی پیدا کنید و آن را دریافت کنید
راه های متنوعی برای در اختیار داشتن آبجکت order وجود دارد. به عنوان مثال اگر شما به id یک سفارش دسترسی داشته باشید میتوانید آن را به تابع wc_get_order داده و در نهایت آبجکت سفارش را دریافت کنید. همچنین بسیاری از هوکهای فیلتر و اکشن ساخته شده در ووکامرس به شما آبجکت order را خواهند داد که موضوع بحث این مقاله نیستند.
// Get $order object from order ID
$order = wc_get_order( $order_id );
در ادامه به اطلاعاتی که میتوانیم از متدهای این آبجکت بدست آوریم، خواهیم پرداخت.
گرفتن id و کلید (key) سفارش
//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_total: برای گرفتن جمع کل سفارش
- ()get_total_discount : برای گرفتن جمع تخفیف های سفارش
- ()get_shipping_tax : برای گرفتن جمع مبالغ حمل و نقل
گرفتن اطلاعات آیتم های یک سفارش
با در دست داشتن آبجکت order$ همچنین میتوانیم با استفاده از متد get_items تمام آیتم های داخل آن سفارش را دریافت کرده و با حلقه زدن روی آنها اطلاعات جزئیات هر کدام را بدست آوریم. به عنوان مثال اسم محصول آیتم، id آن، جمع مبالغ مربوط به آن آیتم و ….
در قطعه کد پایین اطلاعاتی که میتوانیم از آیتم های یک سفارش بدست آوریم مشخص شدهاند.
// 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"
}
گرفتن اطلاعات مربوط به مشتری و حمل نقل
یکی دیگر از اطلاعاتی که میتوانیم از طریق آبجکت order$ بدست بیاوریم، اطلاعات مربوط به مشتری آن سفارش و آیتم های حمل و نقل آن است. در ادامه تمام مواردی که میتوانیم در این خصوص با استفاده از متدهای این آبجکت دریافت کنیم، ذکر شدهاند.
// 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();
گرفتن تاریخ از اطلاعات سفارش از آبجکت order$
چهار تاریخ در فرآیند ثبت یک سفارش وجود دارد که به ترتیب عبارتاند از تاریخ ساخت یا ثبت سفارش، تاریخ پرداخت سفارش، تاریخ تکمیل سفارش و تاریخ تغییرات یا بروزرسانیهای سفارش. برای گرفتن این مقادیر میتوانیم از متدهای زیر استفاده کنیم.
// Get Order Dates
$order->get_date_created();
$order->get_date_modified();
$order->get_date_completed();
$order->get_date_paid();
گرفتن اطلاعات پرداخت سفارش
برای گرفتن اطلاعات روش پرداخت، عنوان روش پرداخت و id تراکنش پرداخت انجام شده میتوانیم از متدهای زیر استفاده کنیم.
// 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();
بررسی صحت وجود آبجکت order$
برای بهینه تر شدن کدهایی که مینویسید و جلوگیری از بروز خطاهای احتمالی بهتر است از هر طریقی که آبجکت سفارش را دریافت کردید، قبل از فراخوانی متدهای آن، بررسی کنید که آیا این آبجکت به درستی ایجاد شده است یا خیر. به عنوان مثال با داشتن id سفارش و فراخوانی تابع wc_get_order میتوانید یک آبجکت از آن سفارش دریافت کنید. اما به هر دلیل ممکن است id که به این تابع پاس دادهاید یک مقدار معتبر نباشد و بنابراین آبجکت به درستی به شما داده نمیشود. بنابراین بهتر است قبل از استفاده از متدهای ذکر شده ابتدا صحت وجود آن را در یک شرط بررسی کنید.
$order = wc_get_order( $order_id );
// Now you have access to order object
if ( $order ){
// etc.
}
جمع بندی
در این مقاله با هم بررسی کردیم که چطور میتوانیم با در دست داشتن آبجکت یک سفارش تمامی اطلاعات مورد نیاز مربوط به آن را دریافت کنیم. این متدها در توسعه قالبها و افزونههای یک سایت فروشگاهی که از ووکامرس استفاده میکنند، بسیار بسیار پر کاربرد هستند و میتوانید قابلیتهای زیادی را با استفاده از این اطلاعات پیاده سازی کنید. امیدوارم محتوای این مقاله برای شما مفید بوده باشه. ممنون از این که تا انتها همراه من بودید. اگر در رابطه با این موارد سوال یا ابهامی داشتید، میتوانید در قسمت کامنتهای همین مقاله مطرح کنید.
دیدگاه و پرسش
امیر طاهرخانی
فول استک دولوپر
مطالب مرتبط
جدیدترین مطالب مرتبط به این مقاله
آموزش ثبت سفارش در ووکامرس با کدنویسی 2024 | - ویکی پلاس
[…] که در مقاله دریافت اطلاعات سفارشات ووکامرس از آبجکت Order گفته شد، برای توسعه قالبها یا افزونههای وردپرسی […]