我在使用WooCommerce的Wordpress上,现在一个名为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 :(得分: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;
}