2013-04-10 8 views
0

Я нахожусь в Wordpress с помощью WooCommerce, теперь плагин под названием Parcelware позволяет мне экспортировать любые заказы между двумя датами, см. Код ниже. Мне нужно добавить к этому фильтр, который означает, что экспортируются только заказы «Обработка».Как фильтровать по статусу заказа

Было бы здорово, если бы кто-нибудь мог мне помочь!

Я нашел эту ссылку на WooCommerce, не уверен, что это поможет.

http://docs.woothemes.com/document/customer-order-csv-import-suite/#importingorders

/** 
* Read order variables from the database and store them in 
* their respective variable slot. This function is called 
* on creation of the object. 
* 
* @abstract 
*/ 
abstract function read_order_settings(); 

/** 
* Get orders 
* 
* @return mixed order 
*/ 
static function get_orders($date_from, $date_to){ 
    // Get orders between the two defined dates, this function uses a filter. 
    define('PARCELWARE_GET_ORDERS_FILTER_DATE_FROM', $date_from); 
    define('PARCELWARE_GET_ORDERS_FILTER_DATE_TO', $date_to); 
    add_filter('posts_where', array(__CLASS__, 'order_page_get_orders_where_dates_between')); 
    $orders = get_posts(array(
     'numberposts' => -1, 
     'offset' => 0, 
     'orderby' => 'post_date', 
     'order' => 'DESC', 
     'post_type' => 'shop_order', 
     'suppress_filters' => false 
    )); 
    remove_filter('posts_where', 'order_page_get_orders_where_dates_between'); 

    return $orders; 
} 

/** 
* Applies a where clause on the get_posts call 
* 
* @param string $where 
* @return string $where 
*/ 
static function order_page_get_orders_where_dates_between($where){ 
    global $wpdb; 

    if(! defined('PARCELWARE_GET_ORDERS_FILTER_DATE_FROM') || ! defined('PARCELWARE_GET_ORDERS_FILTER_DATE_TO')) 
     return $where; 

    $where .= $wpdb->prepare(" AND post_date >= '%s' ", PARCELWARE_GET_ORDERS_FILTER_DATE_FROM); 
    $where .= $wpdb->prepare(" AND post_date <= '%s' ", PARCELWARE_GET_ORDERS_FILTER_DATE_TO); 

    return $where; 
} 

/** 
* Builds the header row for the csv file 
* 
* @return string $csv 
*/ 
static function get_csv_header(){ 
    return implode(self::$separator, array_keys(self::$variable_keys)); 
} 

/** 
* Converts this object to a comma separated values line 
* 
* @param mixed array $array 
* @return string $csv_line 
*/ 
function to_CSV(){ 
    if(empty($this->variables)) 
     return ''; 

    $csv = ''; 
    foreach($this->variables as $variable) 
     $csv .= $variable . self::$separator; 

    return implode(self::$separator, $this->variables); 
} 

}

ответ

0

Заказать статусы таксономия, так что следующий должен фильтровать, что для вас:

static function get_orders($date_from, $date_to){ 
    // Get orders between the two defined dates, this function uses a filter. 
    define('PARCELWARE_GET_ORDERS_FILTER_DATE_FROM', $date_from); 
    define('PARCELWARE_GET_ORDERS_FILTER_DATE_TO', $date_to); 
    add_filter('posts_where', array(__CLASS__, 'order_page_get_orders_where_dates_between')); 
    $orders = get_posts(array(
     'numberposts' => -1, 
     'offset' => 0, 
     'orderby' => 'post_date', 
     'order' => 'DESC', 
     'post_type' => 'shop_order', 
     'suppress_filters' => false, 
     'tax_query' => array(
       array(
        'taxonomy' => 'shop_order_status', 
        'field' => 'slug', 
        'terms' => array('processing') 
       ) 
      ) 
    )); 
    remove_filter('posts_where', 'order_page_get_orders_where_dates_between'); 

    return $orders; 
} 
+0

Это не работает, к сожалению, до сих пор экспортирует все заказы между их даты. –

Смежные вопросы