Un utente ha chiesto informazioni su WooCommerce di Wordpress

Come modificare il prezzo di un singolo prodotto woocommerce utilizzando php?

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

Lascia un commento 0

Your email address will not be published. Required fields are marked *