Woocommerce - Come impostare il prezzo base predefinito del prodotto
Potresti eseguire un controllo sull'hook save_post
, ma WooCommerce ha già un hook per elaborare i metadati dove i controlli di sicurezza e del tipo di post sono già stati eseguiti. Quindi, utilizzando il loro hook, devi solo verificare una stringa vuota per il prezzo regolare e impostarla a 0.
function wpa104760_default_price( $post_id, $post ) {
if ( isset( $_POST['_regular_price'] ) && trim( $_POST['_regular_price'] ) == '' ) {
update_post_meta( $post_id, '_regular_price', '0' );
}
}
add_action( 'woocommerce_process_product_meta', 'wpa104760_default_price' );
Non sono sicuro di cosa stai cercando di fare con WooCommerce, ma ho avuto un cliente che ha utilizzato http://a3rev.com/shop/woocommerce-quotes-and-orders/ per passare da un normale negozio con prezzo/carrello a un catalogo "richiesta di preventivo".
Modifica: Mentre il codice sopra salverà 0 come prezzo ogni volta che un prodotto viene creato/aggiornato, il seguente codice permetterà sempre che un prodotto sia acquistabile indipendentemente dal prezzo:
add_filter('woocommerce_is_purchasable', '__return_TRUE');
Per rimuovere completamente il badge "saldi", semplicemente scollegalo dal suo action hook:
function woocommerce_remove_stuff(){
remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
}
add_action('woocommerce_before_single_product', 'woocommerce_remove_stuff');

Grazie per la tua risposta. Ho provato la funzione sopra indicata ma sembra non permettere l'aggiunta del prodotto al carrello. Sto cercando di creare un sistema di richiesta attrezzature dove gli utenti loggati possono aggiungere attrezzature (che non hanno prezzo) al carrello e inviare un "ordine" per questi articoli. Gli utenti sono dipendenti della mia azienda e le attrezzature sono già di proprietà dell'azienda.

Pensavo che un prodotto gratuito potesse essere aggiunto al carrello. Potresti anche provare a sovrascrivere il filtro woocommerce_is_purchasable
per essere sempre vero.

Quando inserisco manualmente 0 come prezzo posso aggiungerlo al carrello, ma usando la funzione sopra e lasciandolo vuoto non mostra il pulsante di aggiunta al carrello ma visualizza l'icona di saldo. Come potrei sovrascrivere il filtro woocommerce_is_purchasable?

Il mio codice era per quando crei e/o modifichi un prodotto e non compili il prezzo... quindi un prezzo predefinito. Imposta automaticamente il prezzo a 0 ma solo quando salvi un prodotto. Non ha alcun impatto sul front-end tranne quello che è influenzato dall'avere un prezzo zero. Ancora una volta, penso che woocommerce_is_purchasable
potrebbe essere la soluzione.

add_filter('woocommerce_is_purchasable', 'woocommerce_is_always_purchasable');
function woocommerce_is_always_purchasable(){ return true; }

Grazie, il codice sopra ha risolto il problema ma per qualche motivo viene visualizzata l'icona di saldo. È possibile disabilitare completamente la funzione di saldo dato che è qualcosa che non utilizzerò?

Ho trovato la soluzione a questo problema, questa funzione imposta il prezzo regolare e il prezzo in offerta del prodotto a 0 dopo l'aggiornamento del prodotto:
function set_default_price( $post_id, $post ) {
if ( isset( $_POST['_regular_price'] ) && trim( $_POST['_regular_price'] ) == '' ) {
update_post_meta( $post_id, '_regular_price', '0' );
}
if ( isset( $_POST['_sale_price'] ) && trim( $_POST['_sale_price'] ) == '' ) {
update_post_meta( $post_id, '_sale_price', '0' );
}
}
add_action( 'woocommerce_process_product_meta', 'set_default_price' );
La riga di codice seguente rende acquistabile il nuovo prodotto, puoi usare questo codice per i nuovi prodotti:
add_filter('woocommerce_is_purchasable', '__return_TRUE');
