• Resuelto daschin2

    (@daschin2)


    Buenas estoy haciendo un generar recibos personalizados y el problema es que no he podido obtener los datos de la orden

    //archivos externos
        global $wpdb;
        include_once WP_PLUGIN_DIR .'/woocommerce/woocommerce.php';
        include_once WP_PLUGIN_DIR .'/woocommerce/includes/wc-order-functions.php';
        include_once WP_PLUGIN_DIR .'/woocommerce/includes/class-wc-order-item.php';
    //boton en tabla de pedidos
        add_filter("woocommerce_admin_order_actions", function ($actions, $the_order) {
            if ( $the_order->has_status( 'completed' ) ) {
                $action_slug = 'impresion';
                $actions[$action_slug] = [
                    'url' => wp_nonce_url(admin_url('admin-ajax.php?action=invoice_generator&order_id='.get_the_id($the_order))),
                    'action' => $action_slug,
                    'name' => __( 'Imprimir'),
                ];
            }
            return $actions;
        }, 10, 2);
        //icono
        add_action( 'admin_head', 'add_custom_order_status_actions_button_css' );
        function add_custom_order_status_actions_button_css() {
            $action_slug = "impresion"; // The key slug defined for your action button
    
            echo '<style>.wc-action-button-'.$action_slug.'::after { content: "\f193"; }</style>';
        }
        $orden_id = absint( wp_unslash($_GET['order_id']) );
        if(isset($orden_id)){
            print ('La ID de la orden es '.$orden_id.'Es');
            $order  = wc_get_order($orden_id);
        }else{
            echo 'no funciona';};
    • Este debate fue modificado hace 3 años, 9 meses por jose64.
    • Este debate fue modificado hace 3 años, 9 meses por jose64. Razón: etiquetar código
Viendo 1 respuesta (de un total de 1)
  • Iniciador del debate daschin2

    (@daschin2)

    Mirando en la base de datos donde se guardan las ordenes wp_wc_order_product_looku y wp_wc_order_stats que el ID se guarda en la columna por nombre Order_id cambio donde se recibe la orden $the_order por Order_id quedando

    add_filter("woocommerce_admin_order_actions", function ($actions, $order_id) {
            if ( $order_id->has_status( 'completed' ) ) {
                $action_slug = 'impresion';
                $actions[$action_slug] = [
                    'url' => wp_nonce_url(admin_url('admin-ajax.php?action=invoice_generator&order_id='.$order_id)),
                    'action' => $action_slug,
                    'name' => __( 'Imprimir'),
                ];
            }
            return $actions;
        }, 10, 2);

    pero al fijarme en la URL que aparece todos los datos en ella
    admin-ajax.php?action=invoice_generator&order_id=%7B"id"%3A247%2C"parent_id"%3A0%2C"status"%3A"completed"%2C"currency"%3A"USD"%2C"version"%3A"5.0.0"...
    al ponerle $order_id->get_id(); ya aparece el ID del pedido pero al recibirlo y usar wc_get_order( $order_id ) muestro con var_dump para ver que contiene y me aparece que no se recibe o bool(false)

Viendo 1 respuesta (de un total de 1)
  • El debate ‘como obtener datos de una orden’ está cerrado a nuevas respuestas.