2015-06-09 41 views
13

işlevinin bir parçasını, çekirdek dokunmadan class-wc-admin-report.php içinde değiştirmek istiyorum.Wordpress işlevi nasıl geçersiz kılınır get_order_report_data wc_admin_report

Şu anda öyle, sipariş durumu filtreyi değiştirmek istiyorum:

$query['where'] = " 
      WHERE posts.post_type  = 'shop_order' 
      AND  posts.post_status = 'publish' 
      AND  tax.taxonomy  = 'shop_order_status' 
      AND  term.slug   IN ('" . implode("','", apply_filters('woocommerce_reports_order_statuses', array('completed', 'processing', 'on-hold'))) . "') 
      "; 

Ve custom_status için term.slug değiştirmek istiyorum.

I do not şimdi istiyorum ancak term.slug değiştirmek sağlayacak burada uygulanmasını

cevap

5

Bu soru biraz karışık görünüyor, ancak işte benim en iyi yorumum. Böyle bir filtre işlevi yazmak sorguda yakalamak için özel bir durum eklemek istiyorsanız

: o dizideki tüm durumları olsun işlevinde Daha sonra

function woocommerce_reports_order_statuses_filter($order_status){ 
    $order_status[] = 'custom_status'; 
    return $order_status; 
} 
add_filter('woocommerce_reports_order_statuses', 'woocommerce_reports_order_statuses_filter'); 

eklenen 'adet wc' onların gerçek sorgu dizesi için değerler. Yani bu öneki için durumunuza ihtiyacınız olacak. Ya da ... Daha sonraki bir filtre ile sorgu dizesi değiştirebilirsiniz:

function woocommerce_reports_get_order_report_query_filter($query){ 
    $custom_status = 'custom_status'; 
    $query['where'] = substr_replace($query['where'], $custom_status , strpos($query['where'], 'wc-' . $custom_status), strlen('wc-' . $custom_status) ); 
    return $query; 
} 
add_filter('woocommerce_reports_get_order_report_query', 'woocommerce_reports_get_order_report_query_filter'); 

Bütün bu filtre kodu Temanızın functions.php veya özel eklenti koduna eklenir.

1

Filtreler, gibi bir eklentiye falan bunun nasıl. daha yaklaşık add_filter() in the Codex oku

function override_order_report_data_terms($slug_array) { 
    return array('custom_status'); 
} 
add_filter('woocommerce_reports_order_statuses', 'override_order_report_data_terms'); 

: Özel bir eklenti olarak

(veya temanın functions.php'ın), bir filtre ekleyin.

+0

'get_order_report_data' adlı bir filtre bulamadım. Bir şey mi eksik? –

+0

@JamesJones ... Bunun nereden geldiğini bilmiyorum. OP'nin sorusundan bir filtre olmalıydı. – rnevius

+0

Elbette. Haha, OP'nin sorusuna güvenmezdim. Bir delinin ravingsi gibi görünüyorlar. –

İlgili konular