Selamlar,
WordPress WooCommerce API içerisinde, URL parametresi olarak filter ile temel bazı filtrelemler yapmak mümkün. Örneğin; domain.com/wp-json/wc/v3/orders?
status=completed
Ancak, daha spesifik filtrelemelerde maalesef parametrelerin özel bir şekilde tanımlanması gerekiyor. Araştırdığım kadarıyla, bu işlemler için
order endpoint'i için
woocommerce_rest_orders_prepare_object_query hook'u kullanılmakta. Örnek olarak
modified_after için şöyle bir kod parçacığı buldum:
https://codelight.eu/filtering-by-la...ocommerce-api/ Print_r ile
args içeriğine baktığımda
billing > first_name ve diğer bilgileri dizin içeriğinde,
fields altında görebiliyorum (
http://woocommerce.github.io/woocomm...ing-properties). Fakat kod parçacığını güncellediğimde bir türlü sonuç sağlayamıyorum.
Array
(
[paged] => 1
[order] => desc
[orderby] => date ID
[post_type] => shop_order
[posts_per_page] => 10
[post__in] => Array
(
)
[post__not_in] => Array
(
)
[post_parent__in] => Array
(
)
[post_parent__not_in] => Array
(
)
[fields] => Array
(
[0] => id
[1] => parent_id
[2] => number
[3] => order_key
[4] => created_via
[5] => version
[6] => status
[7] => currency
[8] => date_created
[9] => date_created_gmt
[10] => date_modified
[11] => date_modified_gmt
[12] => discount_total
[13] => discount_tax
[14] => shipping_total
[15] => shipping_tax
[16] => cart_tax
[17] => total
[18] => total_tax
[19] => prices_include_tax
[20] => customer_id
[21] => customer_ip_address
[22] => customer_user_agent
[23] => customer_note
[24] => billing
[25] => shipping
[26] => payment_method
[27] => payment_method_title
[28] => transaction_id
[29] => date_paid
[30] => date_paid_gmt
[31] => date_completed
[32] => date_completed_gmt
[33] => cart_hash
[34] => meta_data
[35] => line_items
[36] => tax_lines
[37] => shipping_lines
[38] => fee_lines
[39] => coupon_lines
[40] => refunds
)
[date_query] => Array
(
)
[ignore_sticky_posts] => 1
[post_status] =>
)
Amacım
domain.com/wp-json/wc/v3/orders?billing[first_name]=John şeklinde faturada ad veya soyada göre filtreleme gerçekleştirebilmek.
Oluşturduğum kod parçacığı şu şekilde;
add_filter('woocommerce_rest_orders_prepare_object_query', function(array $args, \WP_REST_Request $request) {
$billing = $request->get_param('billing');
if (!$billing) {
return $args;
}
$args['fields'][24]['billing'][first_name] = $params['billing']['first_name']
return $args;
}, 10, 2);Daha önce benzer bir işlem gerçekleştirmiş; fikri/önerisi olan var mıdır?
Teşekkürler.