WooCommerce - Cum setăm prețul regulat implicit al produsului

30 iun. 2013, 10:27:47
Vizualizări: 29.3K
Voturi: 3

Folosesc WooCommerce la serviciu pentru cereri de echipamente, așadar toate produsele pe care le voi crea vor trebui să aibă prețul de £0. Este posibil să setez o valoare implicită de 0 pentru câmpul preț regulat în formularul de adăugare produs?

Mulțumesc Jack

1
Comentarii

Alternativ, poți folosi un plugin precum WooCommerce Request A Quote pentru a elimina complet opțiunea de plată.

Karl Wolf Karl Wolf
26 ian. 2016 14:27:55
Toate răspunsurile la întrebare 3
7

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');
30 iun. 2013 17:13:02
Comentarii

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.

lupo lupo
1 iul. 2013 23:23:18

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.

helgatheviking helgatheviking
2 iul. 2013 00:03:06

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?

lupo lupo
2 iul. 2013 00:14:46

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.

helgatheviking helgatheviking
2 iul. 2013 00:29:50

add_filter('woocommerce_is_purchasable', 'woocommerce_is_always_purchasable');

function woocommerce_is_always_purchasable(){ return true; }

lupo lupo
2 iul. 2013 00:44:08

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.

lupo lupo
2 iul. 2013 00:47:12

Verifică modificarea mea pentru a elimina bannerul de reducere.

helgatheviking helgatheviking
2 iul. 2013 05:34:50
Arată celelalte 2 comentarii
0

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'); 
24 ian. 2014 12:47:19
0

În WooCommerce 3 poți folosi acest cod:

function NAME_default_price($product)
{
  if (!$product->get_regular_price()) {
    $product->set_regular_price('0');
  }
}
add_action('woocommerce_admin_process_product_object', 'NAME_default_price');
24 apr. 2024 13:11:56