Botón de acción personalizado en la lista de pedidos de administrador en Woocommerce 3.3+

Ya que la versión 3.3+ de WooCommerce, el código que aparece a continuación muestra un botón de acción personalizado en la lista de órdenes de administración, ya no funciona.

// Add your custom order action button add_action( 'woocommerce_admin_order_actions_end', 'add_custom_order_actions_button', 100, 1 ); function add_custom_order_actions_button( $order ) { // Get the tracking number $traking_number = get_post_meta( $order->get_id(), '_aftership_tracking_number', true ); if( empty($traking_number) ) return; // Prepare the button data $url = esc_url('https://track.aftership.com/'.$traking_number.'?'); $name = esc_attr( __('Tracking', 'woocommerce' ) ); $action = esc_attr( 'view tracking' ); // keep "view" class for a clean button CSS // Set the action button printf( 'https://stackoverflow.com/questions/48959047/custom-action-button-in-admin-orders-list-on-woocommerce-3-3/%s', $action, $url, $name, $name ); } // The icon of your action button (CSS) add_action( 'admin_head', 'add_custom_order_actions_button_css' ); function add_custom_order_actions_button_css() { echo '.view.tracking::after { font-family: woocommerce; content: "\e005" !important; }'; } 

El código proviene de esta respuesta: agregue un enlace URL personalizado a la página de la lista de pedidos de administración en WooCommerce

¿Qué cambiaron para evitar que funcione en la nueva versión?
¿Cómo puedo hacer que funcione en la versión 3.3+ de WooCommerce?

Esta es la forma correcta de hacerlo funcionar, ya que este era el código de una de mis respuestas , que cargará en una ventana (o pestaña) del navegador por separado la página de seguimiento correspondiente.

hook woocommerce_admin_order_actions_end todavía existe y funciona . Lo que ha cambiado en vesion 3.3+ es la función que muestra los botones wc_render_action_buttons() y también los botones mostrados html structure and classes.
¿Por qué? … Porque la visualización de la lista de pedidos se ha mejorado en la versión 3.3+.

El código:

 // Add your custom order action button add_action( 'woocommerce_admin_order_actions_end', 'add_custom_order_actions_button', 100, 1 ); function add_custom_order_actions_button( $order ) { // Get the tracking number $traking_number = get_post_meta( $order->get_id(), '_aftership_tracking_number', true ); if( empty($traking_number) ) return; // Prepare the button data $url = esc_url('https://track.aftership.com/'.$traking_number.'?'); $name = esc_attr( __('Tracking', 'woocommerce' ) ); $class = esc_attr( 'tracking' ); // Custom action button (with a target='_blank' opening a new browser window) printf( 'https://stackoverflow.com/questions/48959047/custom-action-button-in-admin-orders-list-on-woocommerce-3-3/%s', $class, $class, $url, $name, $name ); } // The icon of your action button (CSS) add_action( 'admin_head', 'add_custom_order_actions_button_css' ); function add_custom_order_actions_button_css() { echo ''; } 

El código va en el archivo function.php de su tema (o tema) hijo activo.

Probado y funciona solo para woocommerce versión 3.3+

enter image description here

Aquí no utilizo el woocommerce_admin_order_actions acción habitual de woocommerce_admin_order_actions , sino que utilizo un gancho inusual para permitir que se muestre la página de seguimiento en una ventana (o pestaña) del navegador por separado .

Deben haber cambiado mucho porque ese gancho que has usado no existe. Aquí hay una versión modificada de tu código. Cambié la forma en que pusiste en cola el CSS en línea para las mejores prácticas.

 // Add your custom order action button add_filter( 'woocommerce_admin_order_actions', 'add_custom_order_actions_button', 10, 2 ); function add_custom_order_actions_button( $actions, $order ) { // Get the tracking number $tracking_number = get_post_meta( $order->get_id(), '_aftership_tracking_number', true ); if( empty( $tracking_number ) ) return $actions; // Prepare the button data $url = esc_url('https://track.aftership.com/'.$tracking_number.'?'); $name = esc_attr( __('Tracking', 'woocommerce' ) ); $action = esc_attr( 'view tracking' ); // keep "view" class for a clean button CSS $actions['view-tracking'] = array( 'url' => $url, 'name' => $name, 'action' => $action ); return $actions; } //Adding CSS inline style to an existing CSS stylesheet function add_inline_css() { //All the user input CSS settings as set in the plugin settings $custom_css = '.view.tracking::after { font-family: woocommerce; content: "\e005" !important; }'; //Add the above custom CSS via wp_add_inline_style wp_add_inline_style( 'woocommerce_admin_styles', $custom_css ); } add_action( 'wp_enqueue_scripts', 'add_inline_css' ); 

hm … no funciona. Lo pego en mi function.php y puedo ver cualquier cambio = (

pero necesito mostrar el método de pago elegido