Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw wartości do niestandardowej tabeli po złożeniu zamówienia w Woocommerce

W Twoim kodzie znajdują się dziwne rzeczy, takie jak 'order_id' => $email powinna to być wartość identyfikatora zamówienia, a nie adres e-mail… Również $customer_id= $order->id; to NIE jest identyfikator użytkownika klienta, ale identyfikator zamówienia i $email1= $order->id; to nie jest używane i jest złe… */

<?php

#-------------------- code begins below -------------------------#

add_action( 'woocommerce_order_status_completed', 'my_function' );
function my_function($order_id) {
    global $wpdb;

    // Getting the order (object type)
    $order = wc_get_order( $order_id );

    // Getting order items
    $items = $order->get_items(); 
    $total_items_qty = 0;

    // Iterating through each item (here we do it on first only)
    foreach ( $items as $item ) {
        $total_items_qty += $item["qty"];
    }

    // Here are the correct way to get some values:
    $customer_id           = $order->customer_user;
    $billing_email         = $order->billing_email;
    $complete_billing_name = $order->billing_first_name . ' ' . $order->billing_last_name;

    // Getting the user data (if needed)
    $user_data             = get_userdata( $customer_id );
    $customer_login_name   = $user_data->user_login;
    $customer_login_email  = $user_data->user_email;

    // "$wpdb->prefix" will prepend your table prefix
    $table_name =  $wpdb->prefix."license_table";

    // This array is not correct (as explained above)
    $data = array( 
        'username'          => $customer_login_name,
        'order_id'          => $order_id,
        'number_of_cameras' => $total_items_qty,
        'boolean'           => 'false',
    );

    $wpdb->insert( $table_name, $data );

}

#-------------------- code end -------------------------#

?>

Dziwne jest również to, że możesz mieć wiele pozycji (produktów) w zamówieniu, a Twoja tabela sobie z tym nie poradzi, ponieważ powinieneś potrzebować również wiersz po pozycji…




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wielokrotne relacje między dwoma podmiotami, czy to dobra praktyka?

  2. Jak używać zapytania wybierającego MySQL w metadanych użytkownika wordpress i lewego sprzężenia z innej tabeli?

  3. Zwracanie brakujących wyników z wielu do wielu tabel

  4. Zliczaj aktywnych użytkowników na podstawie logowań z ostatnich 90 dni

  5. Migracje NetSuite