Stimart
Me gustaría obtener todos los slugs y nombres de todos los estados de pedidos de WooCommerce. Probé las respuestas del siguiente hilo: Woocommerce obtiene una lista de estados de pedidos pero sin éxito.
Uso la última versión de woocommerce. Cualquier ayuda es apreciada.
Usarás la función dedicada wc_get_order_statuses()
de las funciones WC_Order, que le dan por defecto la siguiente matriz:
$order_statuses = array(
'wc-pending' => _x( 'Pending payment', 'Order status', 'woocommerce' ),
'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),
'wc-on-hold' => _x( 'On hold', 'Order status', 'woocommerce' ),
'wc-completed' => _x( 'Completed', 'Order status', 'woocommerce' ),
'wc-cancelled' => _x( 'Cancelled', 'Order status', 'woocommerce' ),
'wc-refunded' => _x( 'Refunded', 'Order status', 'woocommerce' ),
'wc-failed' => _x( 'Failed', 'Order status', 'woocommerce' ),
);
Todo También se incluirán estados de pedidos adicionales personalizados. como el gancho del filtro
wc_order_statuses
se aplica dentro de esta función.
Agregue el siguiente fragmento a functions.php y llame a woocommerce_get_order_statuses() donde desee usarlo.
function woocommerce_get_order_statuses() {
$order_statuses = get_terms( 'shop_order_status', array( 'hide_empty' => false ) );
$statuses = array();
foreach ( $order_statuses as $status ) {
$statuses[ $status->slug ] = $status->name;
}
return $statuses;
}
wc_get_order_status() proporcionará solo los estados predeterminados de WooCommerce, pero para obtener todos los estados de los pedidos, puede usar la siguiente función woocommerce_get_all_order_status()
function woocommerce_get_all_order_statuses() {
$order_statuses = get_posts( array('post_type'=>'wc_order_status', 'post_status'=>'publish', 'numberposts'=>-1) );
$statuses = array();
foreach ( $order_statuses as $status ) {
$statuses[ $status->post_name ] = $status->post_title;
}
return $statuses;
}