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.