WooCommerce - Cum setăm prețul regulat implicit al produsului
Puteți rula o verificare pe hook-ul save_post
, dar WooCommerce are deja un hook pentru procesarea metadatelor unde verificările de tip post și securitate au fost deja făcute. Așadar, folosind hook-ul lor, trebuie doar să verificați un șir gol pentru prețul obișnuit și să îl setați la 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' );
Nu sunt sigur ce încercați să faceți cu WooCommerce, dar am avut un client care a folosit http://a3rev.com/shop/woocommerce-quotes-and-orders/ pentru a trece de la un magazin cu preț/cos normal la un catalog pentru "cerere de ofertă".
Edit: Deși soluția de mai sus va salva 0 ca preț de fiecare dată când un produs este creat/actualizat, următoarea va permite întotdeauna ca un produs să fie cumpărabil, indiferent de preț:
add_filter('woocommerce_is_purchasable', '__return_TRUE');
Pentru a elimina complet "reducerea" afișată, pur și simplu scoateți-o din hook-ul său de acțiune:
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');

Mulțumesc pentru răspuns. Am încercat funcția menționată mai sus, dar nu pare să permită adăugarea produsului în coș. Încerc să creez un sistem de solicitare a echipamentelor unde utilizatorii autentificați pot adăuga echipamente (care nu au preț) în coș și să plaseze o "comandă" pentru aceste articole. Utilizatorii sunt angajați ai companiei mele, iar echipamentul este deja deținut de companie.

Am crezut că un produs gratuit poate fi adăugat în coș. Ai putea încerca și să suprascrii filtrul woocommerce_is_purchasable
pentru a fi întotdeauna adevărat.

Când introduc manual 0 în preț, pot să-l adaug în coș, dar folosind funcția de mai sus și lăsând câmpul gol, butonul de adăugare în coș nu apare, dar afișează pictograma de reducere. Cum aș putea suprascrie filtrul woocommerce_is_purchasable?

Codul meu era pentru momentul în care creezi și/sau editezi un produs și nu completezi prețul... deci un preț implicit. Acesta va seta automat prețul la 0, dar numai când salvezi un produs. Nu are nici o influență în front-end, cu excepția ceea ce este afectat de a avea un preț zero. Din nou, cred că woocommerce_is_purchasable
ar putea fi soluția.

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

Mulțumesc, soluția de mai sus a rezolvat problema, dar din anumite motive, iconița de reducere este afișată. Este posibil să dezactivez complet funcția de reducere, deoarece aceasta este ceva pe care nu o voi folosi.

Am găsit soluția pentru această problemă, această funcție setează prețul regulat și prețul de vânzare al produsului la 0 după actualizarea produsului:
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' );
Următoarea linie de cod face ca noul produs să fie achiziționabil, puteți folosi acest cod pentru produse noi:
add_filter('woocommerce_is_purchasable', '__return_TRUE');
