• Resolved bmz1

    (@bmz1)


    Il vostro lavoro mi sta aiutando tanto e vi ringrazio!
    Ho una domanda da ‘gnurant: utilizzo una funzione che elimina i campi in caso di prodotto virtuale gratuito, mantenendo solo email. Attivo il vostro plugin ma continuano ad apparire anche i campi Fattura e CF. Non capisco cosa devo utilizzare per fare un remove_filter per non farli apparire. Esempio che non funziona (‘woocommerce_checkout_fields’, ‘???’).
    Potete aiutarmi? Grazie grazie grazie
    Bruno

    https://www.ads-software.com/plugins/woocommerce-pdf-invoices-italian-add-on/

Viewing 9 replies - 1 through 9 (of 9 total)
  • Plugin Author labdav

    (@labdav)

    ciao Bruno
    se parliamo dell’ultima versione del nostro plugin, dovrebbe essere sufficiente (è da verificare) fare una remove_action di woocommerce_checkout_process che avvia la funzione di controllo sui dati inseriti.
    Fai attenzione a come imposti le cose, perché ci potrebbero essere implicazioni sulla numerazione automatica delle fatture.

    Thread Starter bmz1

    (@bmz1)

    Wow, questa è velocità! 5 stelle!
    Come detto non sono un programmatore, e quindi ho capito ciò che vuoi dirmi ma non so metterlo in pratica.
    Sono andato a vedere alla riga 58 come è costruita l’action e ho provato a rimuoverla, indicando il tag e poi la funzione. Ma non succede niente.

    Hai ancora un minuto da dedicarmi? Grazie, Bruno

    Plugin Author labdav

    (@labdav)

    avevo capito che eri pratico di programmazione.
    Puoi indicarmi il plugin o il metodo che stai usando per eliminare i campi in caso di prodotto virtuale gratuito?

    Thread Starter bmz1

    (@bmz1)

    Se usi wp è naturale anche per chi non è programmatore provare a fargli fare ciò che ti passa per la testa … quindi ho cercato su internet qualche idea e questo è il codice che uso

    function bmz_billing_fields( $fields ) {
    if ( is_checkout() && WC()->cart->needs_payment() || is_checkout() && WC()->cart->needs_shipping() ) {
    ...
    return $fields;
    }
    remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
    add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );

    remove_action( 'woocommerce_checkout_process', 'piva_checkout_field_process');
    //unset( $fields['billing_first_name'] );
    //unset( $fields['billing_last_name'] );
    //unset( $fields['billing_email'] );
    unset( $fields['billing_country'] );
    unset( $fields['billing_company'] );
    ....

    return $fields;
    }

    Come vedi non so come trattare la tua action per non farla vedere nel frontend ma soprattutto per non farla funzionare (se uso unset sui tuoi campi la funzione è attiva e: se su ricevuta allora procedo, se su fattura chiede piva).

    Grazie per l’aiuto che mi potrai dare, credo che il tuo plugin sia ottimo, a me serve che funzioni anche per le situazioni di gratuità (prodotti virtuali e gratuiti da scaricare senza troppe formalità).
    Grazie,
    Bruno

    Plugin Author labdav

    (@labdav)

    prova con:
    remove_action( 'woocommerce_checkout_process', array('WooCommerce_Italian_add_on', 'piva_checkout_field_process'));

    fammi sapere se funziona

    Thread Starter bmz1

    (@bmz1)

    purtroppo no, continuano ad apparire e a funzionare.
    Se ti vengono in mente altre proposte … rimango in attesa di tue info.
    Grazie, Bruno

    Thread Starter bmz1

    (@bmz1)

    ho fatto questa prova:
    inserisco la tua remove_action, rendo invisibili i campi con unset($fields['billing_invoice_type']);
    unset($fields['billing_cf']);

    e ottengo: i campi non sono visibili (ok), quando clicco “Ordina” appare messaggio
    SyntaxError: JSON Parse error: Unrecognized token '<'.

    Thread Starter bmz1

    (@bmz1)

    Mi sembra che facendo così funzioni!
    Inserisco in woocommerce-pdf-italian-add-on.php un controllo nella tua funzione:

    public function piva_checkout_field_process() {
    global $woocommerce;

    // inserisco questo controllo
    if ( is_checkout() && WC()->cart->needs_payment() || is_checkout() && WC()->cart->needs_shipping() ) { //BMZ
    poi prosegue la tua funzione
    // Verifica se è presente quando cliccano su acquista
    ... }

    Plugin Author labdav

    (@labdav)

    controlla che non dia errore in altre occasioni, ad esempio nella parte di amministrazione degli Ordini oppure nell’area My Account. In quel caso potrebbe cercare un campo che non trova e dare errore.

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘Remove_filter per checkout prodotti gratuiti’ is closed to new replies.