Skip to content

Instantly share code, notes, and snippets.

@fbmoises
Last active November 23, 2017 12:49
Show Gist options
  • Save fbmoises/08358f282cec50111c945b3e25f383b8 to your computer and use it in GitHub Desktop.
Save fbmoises/08358f282cec50111c945b3e25f383b8 to your computer and use it in GitHub Desktop.
Agregar botón en el listado de pedidos de mi cuenta para poder repetir pedido
// Agregar botón en el listado de pedidos de mi cuenta para poder repetir pedido
add_filter( 'woocommerce_my_account_my_orders_actions', 'wcfb_add_order_again_aciton', 10, 2 );
function wcfb_add_order_again_aciton( $actions, $order ) {
if ( ! $order || ! $order->has_status( 'completed' ) || ! is_user_logged_in() ) {
return;
}
// Backward compatibility WC < 3.0.0
if ( version_compare( WC()->version, '3.0.0', '<' ) ) {
$order_id = $order->id;
} else {
$order_id = $order->get_id();
}
$actions['order-again'] = array(
'url' => wp_nonce_url( add_query_arg( 'order_again', $order_id ) , 'woocommerce-order_again' ),
'name' => 'Pedir de nuevo'
);
return $actions;
}
@acanza
Copy link

acanza commented Nov 23, 2017

Funciona perfecto el snippet Moisés ¡Gracias!
Lo único que tiene es que en el depurador de WP te muestra un mensaje de aviso por relacionado con el $order->id que a partir de la versión 3.0.0 de WC se reemplazó por el método $order->get_id().

Me he permitido el lujo de corregir ese pequeño bug para que sea compatible tanto para WC > 3.0.0 como para versiones anteriores.

Saludos!

`// Agregar botón en el listado de pedidos de mi cuenta para poder repetir pedido
add_filter( 'woocommerce_my_account_my_orders_actions', 'wcfb_add_order_again_action', 10, 2 );
function wcfb_add_order_again_action( $actions, $order ) {

if ( ! $order || ! $order->has_status( 'completed' ) || ! is_user_logged_in() ) {
    return;
}

// Backward compatibility WC < 3.0.0
if ( version_compare( WC()->version, '3.0.0', '<' ) ) {
	
	$order_id = $order->id;
}else{

	$order_id = $order->get_id();
}

$actions['order-again'] = array(
    'url'  => wp_nonce_url( add_query_arg( 'order_again', $order_id ) , 'woocommerce-order_again' ),
    'name' => __( 'Pedir de nuevo', 'woocommerce' )
);

return $actions;

}`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment