• 01-04-2021, 22:15:26
    #1
    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.
  • 06-04-2021, 01:32:29
    #2
    KONU ÇÖZÜLDÜ.

    Konuyu db sorgusu ile çözüm.