Je travaille sur un thème enfant dans le woocommerce. Dans une fonction, j'essaie d'utiliser les valeurs par défaut get_total_sales() et set_total_sales() pour ajouter le total des ventes et enregistrer lorsqu'il est appelé depuis AJAX (lorsqu'un bouton est cliqué pour télécharger).

function download_count_callback(){

    //get product id from AJAX POST
    $productid = $_POST['productid'];

    //get product by id
    $product = wc_get_product( $productid );

    //get the total sales number
    $downloadcount = $product->get_total_sales();
    error_log ("NUMBER was : ".$downloadcount );

    //add 1 to total sales
    $downloadcount += 1;
    error_log ("NUMBER should become : ".$downloadcount );

    //get the renewed total sales number
    $product->set_total_sales($downloadcount);
    error_log ("NUMBER NOW : ".$product->get_total_sales());

    wp_die();
}

Voici à quoi ressemble le journal du serveur :

[23-Feb-2020 12:44:44 UTC] NUMBER was : 0
[23-Feb-2020 12:44:44 UTC] NUMBER should become : 1
[23-Feb-2020 12:44:44 UTC] NUMBER NOW : 1

Cela semble bien, mais non... Le nombre de téléchargements n'a pas été enregistré dans la base de données. Quand je rafraîchis la page,

get_total_sales() reviendra à 0.

Qu'est-ce qui pourrait mal ici?

1
adrian li 23 févr. 2020 à 15:55

1 réponse

Meilleure réponse

Cela fait-il une différence ?

function download_count_callback(){

    //get product id from AJAX POST
    $productid = $_POST['productid'];

    //get product by id
    $product = wc_get_product( $productid );

    //get the total sales number
    $downloadcount = $product->get_total_sales();
    error_log ("NUMBER was : ".$downloadcount );

    //add 1 to total sales
    $downloadcount += 1;
    error_log ("NUMBER should become : ".$downloadcount );

    //get the renewed total sales number
    $product->set_total_sales($downloadcount);

    $product->save();
    error_log ("NUMBER NOW : ".$product->get_total_sales());

    wp_die();
}
0
7uc1f3r 23 févr. 2020 à 13:38