Mejoras WooCommerce

Como completar pedidos automáticamente (para que salten automatizaciones como AutomatorWP), poder editar pedidos y añadir un nuevo estado de pedido como «Enviado».

// Completar pedidos automáticamente woocommerce
function fla_actualiza_estado_pedidos_a_completado($order_id)
{
	global $woocommerce;

	//ID's de las pasarelas de pago a las que afecta
	$paymentMethods = array('stripe', 'paypal', 'ppcp-gateway');

	if (!$order_id) return;
	$order = new WC_Order($order_id);

	if (!in_array($order->payment_method, $paymentMethods)) return;
	$order->update_status('completed');
}
add_action('woocommerce_order_status_processing', 'fla_actualiza_estado_pedidos_a_completado', 5);

// Editar Pedidos woocommerce
function bbloomer_custom_order_status_editable( $allow_edit, $order ) {
	if ( $order->get_status() === 'completed' ) {
		$allow_edit = true;
	}
	return $allow_edit;
}
add_filter( 'wc_order_is_editable', 'bbloomer_custom_order_status_editable', 9999, 2 );

// Añadir estado de pedido "Enviado"
function register_enviado_order_status() {
	register_post_status( 'wc-enviado', array(
		'label' => 'Enviado',
		'public' => true,
		'show_in_admin_status_list' => true,
		'show_in_admin_all_list' => true,
		'exclude_from_search' => false,
		'label_count' => _n_noop( 'Enviado <span class="count">(%s)</span>', 'Enviado <span class="count">(%s)</span>' )
	) );
}
add_action( 'init', 'register_enviado_order_status' );
function add_enviado_to_order_statuses( $order_statuses ) {
	$new_order_statuses = array();
	foreach ( $order_statuses as $key => $status ) {
		$new_order_statuses[ $key ] = $status;
		if ( 'wc-processing' === $key ) {
			$new_order_statuses['wc-enviado'] = 'Enviado';
		}
	}
	return $new_order_statuses;
}
add_filter( 'wc_order_statuses', 'add_enviado_to_order_statuses' );
function add_enviado_bulk_actions( $bulk_actions ) {
	$bulk_actions['mark_enviado'] = 'Cambiar a Enviado';
	return $bulk_actions;
}
add_filter( 'bulk_actions-edit-shop_order', 'add_enviado_bulk_actions', 20, 1 );

function handle_enviado_bulk_actions( $redirect_to, $action, $post_ids ) {
	if ( $action !== 'mark_enviado' ) {
		return $redirect_to;
	}
	foreach ( $post_ids as $post_id ) {
		$order = wc_get_order( $post_id );
		$order->update_status( 'enviado' );
	}
	$redirect_to = add_query_arg( 'bulk_enviado_orders', count( $post_ids ), $redirect_to );
	return $redirect_to;
}
add_filter( 'handle_bulk_actions-edit-shop_order', 'handle_enviado_bulk_actions', 10, 3 );
function enviado_status_label_color( $order ) {
	?>
	<style>
        mark.order-status.status-enviado.tips {
            background-color: cornflowerblue;
            color: white;
        }
	</style>
	<?php
}
add_action( 'admin_head', 'enviado_status_label_color' );

¿Te ha gustado?

Tengo una newsletter que alguna vez retomaré y seguramente sea pronto, así que te animo a que te suscribas para enviarte más cositas monas y desafiantes.

Formulario de suscripción

Al darte de alta en mi boletín, me comprometo a:

 1  Hablar de lo que me preocupa en la actualidad cultural y de las cosas con las que estoy disfrutando en ese momento con la intención de que te rumie la cabeza y podamos tener una conversación cultural activa.
 2  Contestarte si me escribes comentando algún tema del tratado en el correo correspondiente.
 3  Poner colorinchis y gifs monis.
 4  No mirar si te das de baja. Esta es una lista que no juzga, simplemente es disfrutona. Tampoco tiene métricas, los correos se envían a través de un servicio de envío de emails de sendgrid pero el sistema de envío es por medio de un plugin que he creado yo en WordPress. No hay proveedores de terceros que me digan «qué correo funciona más». Directamente paso del capitalismo.
 5  De vez en cuando te enviaré cosillas en las que participo u organizo. La mayoría son en Alicante y gratuitas, aunque si hay algo de pago, como un libro o curso o lo que sea, ¡será previamente avisado!

Nombre
Email *

Estos datos los gestiono yo misma, Flavia Bernárdez Rodríguez y están alojados en el servidor de Nicalia (una empresa de hosting sostenible buenísima cuyo datacenter está en España). Usaré los datos para enviarte emails sobre las cosas que hago, organizo o pienso. Te podrás dar de baja cuando quieras, bien cuando te envíe un mail, o bien diciéndomelo por cualquier método de contacto.

Habrás recibido un correo para confirmar tu suscripción

Tuvimos un error, por favor revisa y prueba de nuevo