"Enter"a basıp içeriğe geçin

WooCommerce: $order Objesinden Sipariş Verilerini Almak

Bir WooCommerce geliştirici olarak, her gün tekrarladığım birçok kodlama işlemi zaman kaybına neden oluyordu. Bunlardan biri: “Eğer $order değişken/objem varsa xxx i nasıl alabilirim?”.

Örneğin, “Sipariş toplamını nasıl alabilirim?” ya da “Sipariş kalemlerini nasıl alabilirim?” veya belki sipariş tarihleri, müşteri ID’si, fatura bilgileri, ödeme yöntemi, sipariş durumu gibi bilgileri nasıl alabilirim. Umarım bu makale sizin de zaman kazanmanıza yardımcı olur!

$product objesinden ürün bilgilerini alabilir ve $cart objesinden sepet bilgilerini alabilirsiniz; ancak her zaman doğrudan $order değişkenine erişiminiz olmayabilir.

Bazen, örneğin $order_id’ye erişiminiz olabilir. Bu durumda, wc_get_order WooCommerce fonksiyonunu kullanarak sipariş objesini “alabilirsiniz”.

Ayrıca, $order bilgilerine e-posta şablonlarında da ulaşmak mümkün. Bu, işlemsel iletişimlerinizde ek $order bilgilerini göstermek veya özel fonksiyonları tetiklemek için yararlı olabilir. Her halükarda, keyfini çıkarın!

1. $order değişkenine erişiminiz var mi?

Hooks (do_action ve apply_filters) ek argümanlar kullanır ve bu argümanlar fonksiyona iletilir. Eğer “$order” objesini kullanmanıza izin veriyorlarsa, işiniz kolay.

İşte tüm sipariş bilgilerini almanın yolu:

// Sipariş ID ve Anahtarını Al
$order->get_id();
$order->get_order_key();

// Sipariş Toplamlarını Al
$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();

// Sipariş Kalemlerini Al ve Dolaş
foreach ( $order->get_items() as $item_id => $item ) {
   $product_id = $item->get_product_id();
   $variation_id = $item->get_variation_id();
   $product = $item->get_product(); // yukarıdaki linke bakarak $product bilgisi alın
   $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(); // örneğin "line_item", "fee"
}

// Diğer İkincil Kalem Bilgileri
$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();

// Sipariş Satırlarını Al
$order->get_line_subtotal();
$order->get_line_tax();
$order->get_line_total();

// Sipariş Nakliyat Bilgilerini Al
$order->get_shipping_method();
$order->get_shipping_methods();
$order->get_shipping_to_display();

// Sipariş Tarihlerini Al
$order->get_date_created();
$order->get_date_modified();
$order->get_date_completed();
$order->get_date_paid();

// Sipariş Kullanıcı, Fatura ve Gönderim Adreslerini Al
$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();

// Sipariş Ödeme Detaylarını Al
$order->get_payment_method();
$order->get_payment_method_title();
$order->get_transaction_id();

// Sipariş URL'lerini Al
$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();

// Sipariş Durumunu Al
$order->get_status();

// Teşekkür Sayfası URL'sini Al
$order->get_checkout_order_received_url();

2. $order_id değişkenine erişiminiz var

Eğer sipariş ID’sine doğrudan erişiminiz varsa önce sipariş objesini almak zorundasınız. Ardından yukarıdaki gibi tam olarak aynı şeyleri yapabilirsiniz ve sipariş durumu, fatura bilgileri, gönderim bilgileri vb. alabilirsiniz.

// Sipariş ID'sinden $order objesini al
$order = wc_get_order( $order_id );

// Şimdi aşağıdakilere erişiminiz var (yukarıda göründüğü gibi)...
if ( $order ) {
   $order->get_formatted_order_total( );
   // vb.
   // vb.
}

3. $email değişkenine erişiminiz var

Eğer WooCommerce e-postaları ile çalışıyorsanız, genellikle $email objesi parametre olarak mevcut olacaktır. Bu nesneden $order objesini almak için ek bir adım gerekir. Ardından yukarıdaki gibi tam olarak aynı şeyleri yapabilirsiniz.

// $email'den $order objesini al
$order = $email->object;

// Şimdi aşağıdakilere erişiminiz var (yukarıda göründüğü gibi)...
if ( $order ) {
   $order->get_id();
   $order->get_formatted_order_total( );
   // vb.
   // vb.
}

Kaynak

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir