Un utente ha chiesto 👇
Sto creando un piccolo mercato su wordpress usando WooCommerce, voglio che i venditori siano in grado di cambiare il prezzo dei prodotti. Come posso farlo usando PHP?
Supporto per plugin
(@riaanknoetze)
11 mesi, 4 settimane fa
Ciao,
Hai considerato l’utilizzo del file https://woocommerce.com/products/product-vendors/ estensione? Mi chiedo perché sembra coprire l’esatto caso d’uso che stai cercando.
Se vuoi aggiungerlo, tuttavia, usando la codifica personalizzata: lo lascerò aperto per un po ‘per vedere se qualcuno può fare una codifica per aiutarti a pensare al codice che è necessario in profondità.
Posso anche suggerire i seguenti luoghi per domande mirate a un maggiore sviluppo:
Comunità di sedimenti WooCommerce: https://woocommerce.com/community-slack/
Gruppo WooCommerce avanzato su Facebook: https://www.facebook.com/groups/advanced.woocommerce/
(@lorro)
11 mesi, 4 settimane fa
L’oggetto del prodotto è descritto qui:
https://docs.woocommerce.com/wc-apidocs/class-WC_Product.html
Puoi usare i metodi: set_regular_price (), set_sale_price () e set_price (). Se è presente un prezzo_scontato, il prezzo di vendita è il prezzo di vendita, in caso contrario il prezzo è il prezzo normale.
Lanciatore di thread
(@shamoonalitee)
11 mesi, 3 settimane fa
@riaanknoetze Sì, ho visto quel Plugin, non quello che stavo cercando per il mio progetto è un po ‘diverso. Comunque, grazie mille per i link!
Lanciatore di thread
(@shamoonalitee)
11 mesi, 3 settimane fa
@lorro grazie! ma come posso utilizzare queste funzioni per un prodotto, che aggiorna il suo prezzo non solo visualizzato ma anche nel database? C’è un modo per farlo o sto chiedendo qualcosa che non si può fare?
Ho provato ad aggiungere questo codice
function return_custom_price($price, $product) {
global $post, $blog_id;
$product = wc_get_product( '$post_id' );
$post_id = $post->ID;
$wc_product_id = 168;
if($post_id == $wc_product_id) {
$price = 77;
}
return $price;
}
add_filter('woocommerce_get_price', 'return_custom_price', 10, 2);
Cambia il prezzo di visualizzazione del prodotto, ma il prezzo effettivo nel database e nel pannello woocommerce rimane lo stesso.
Questa risposta è stata modificata 11 mesi, 3 settimane fa da. Questa risposta è stata modificata 11 mesi, 3 settimane fa da.
(@lorro)
11 mesi, 3 settimane fa
Spiacenti, non testato:
// ...
$product->set_regular_price( $regular_price );
if( $sale_price ) {
$product->set_sale_price( $sale_price );
$new_price = $sale_price;
} else {
$new_price = $regular_price;
}
$product->set_price( $new_price );
$product->save()
Lanciatore di thread
(@shamoonalitee)
11 mesi, 3 settimane fa
@lorro Grazie amico! Lo proverò!
Lanciatore di thread
(@shamoonalitee)
11 mesi, 3 settimane fa
Grazie ragazzi ho finalmente trovato il codice funzionante … postando il codice qui in modo che qualcun altro con lo stesso problema possa vederlo.
add_action( 'get_header', 'change_and_save_product_price', 10, 2 );
function change_and_save_product_price() {
if ( get_post_type() === "product" ){ // or use: is_product()
// Regular Price
$regular_price = 400;
// Sale Price (If you want to add any)
$sale_price = 336;
// Set the product ID of the product you want to change the price of
$productID = 167;
// Get product
$product = wc_get_product($productID);
// Set regular price
$product->set_regular_price( $regular_price );
// If your product has a Sale price
if( $sale_price ) {
$product->set_sale_price( $sale_price );
$new_price = $sale_price;
} else {
$new_price = $regular_price;
}
// Set new price
$product->set_price( $new_price );
// Save to database (Note: You might want to clear cache of your page and then reload, if it still doesn't show up go to the product page and check there.)
$product->save();
}
}
do_action('get_header');
Questa risposta è stata modificata 11 mesi, 3 settimane fa da.
(@lorro)
11 mesi, 3 settimane fa
Potrebbe essere necessario eliminare il prodotto transitorio pertinente:
wc_delete_product_transients( $post_id );
Questo è un prodotto memorizzato nella cache. La cache si ripeterà la prossima volta che il prodotto viene interrogato.
Lanciatore di thread
(@shamoonalitee)
11 mesi, 3 settimane fa
@lorro Oh grazie! Non si trattava di …
(@carlamannino)
8 mesi, 3 settimane fa
Ciao! Ho provato il tuo codice e funziona perfettamente!
Ma devo fare una domanda, se il prezzo per salvare in php variabile il codice non funziona, qualche idea ??
$ precio_producto = $ precio_gramo * $ row_peso[3] * $ row_porc[3];
add_action (‘get_header’, ‘change_and_save_product_price’, 10, 2);
function change_and_save_product_price () {
if (get_post_type () === “product”) {// o usa: is_product ()
// Prezzo regolare
$ regular_price = $ precio_producto;
// Prezzo di vendita (se vuoi aggiungerne uno)
// $ prezzo_scontato =;
// Imposta l’ID del prodotto di cui desideri il prezzo
$ productID = 732;
// Ottieni un prodotto
$ product = wc_get_product ($ productID);
// Imposta un prezzo normale
$ product-> set_regular_price ($ regular_price);
// Se il tuo prodotto ha un prezzo di vendita
if ($ sale_price) {
$ product-> set_sale_price ($ sale_price);
$ new_price = $ sale_price;
} altro {
$ new_price = $ regular_price;
}
// Imposta un nuovo prezzo
$ product-> set_price ($ new_price);
// Salva nel database
$ prodotto-> salva ();
}
}
do_action (‘get_header’);
(@lorro)
8 mesi, 3 settimane fa
Per consentirti di utilizzare il valore dall’esterno della tua funzione potresti utilizzare:
global $precio_producto;
in ogni funzione in cui si verifica.
(@carlamannino)
8 mesi, 3 settimane fa
Grazie @lorro ma continua a non restituire alcun valore:
$ precio_producto = $ precio_gramo * $ row_peso[3] * $ row_porc[3];
global $ precio_producto;
add_action (‘get_header’, ‘change_and_save_product_price’, 10, 2);
function change_and_save_product_price () {
if (get_post_type () === “product”) {// o usa: is_product ()
// Prezzo regolare
$ regular_price = $ precio_producto;
// Prezzo di vendita (se vuoi aggiungerne uno)
// $ prezzo_scontato =;
// Imposta l’ID del prodotto di cui desideri il prezzo
$ productID = 732;
// Ottieni un prodotto
$ product = wc_get_product ($ productID);
// Imposta un prezzo normale
$ product-> set_regular_price ($ regular_price);
// Se il tuo prodotto ha un prezzo di vendita
if ($ sale_price) {
$ product-> set_sale_price ($ sale_price);
$ new_price = $ sale_price;
} altro {
$ new_price = $ regular_price;
}
// Imposta un nuovo prezzo
$ product-> set_price ($ new_price);
// Salva nel database (Nota: potresti voler svuotare la cache della tua pagina e poi ricaricarla, se non viene ancora visualizzata vai alla pagina del prodotto e poi controlla.)
$ prodotto-> salva ();
}
}
do_action (‘get_header’);
(@lorro)
8 mesi, 3 settimane fa
Hai anche bisogno del mondo all’interno della funzione.
(@carlamannino)
8 mesi, 3 settimane fa
Ho capito 🙂
add_action( 'get_header', 'change_and_save_product_price', 10, 2 );
function change_and_save_product_price() {
global $precio_producto;
if ( get_post_type() === "product" ){ // or use: is_product()
// Regular Price
$regular_price = $precio_producto;
// Sale Price (If you want to add any)
//$sale_price = ;
// Set the product ID of the product you want to change the price of
$productID = 732;
// Get product
$product = wc_get_product($productID);
// Set regular price
$product->set_regular_price( $regular_price );
// If your product has a Sale price
if( $sale_price ) {
$product->set_sale_price( $sale_price );
$new_price = $sale_price;
} else {
$new_price = $regular_price;
}
// Set new price
$product->set_price( $new_price );
// Save to database (Note: You might want to clear cache of your page and then reload, if it still doesn't show up go to the product page and check there.)
$product->save();
}
}
do_action('get_header');
Was this helpful?
0 / 0