More

    Woocommerce Snippet: is het een geschenk?

    Met deze snippet kun je dat een bestelling een kado is, daarvoor maken we imet deze snippet een extra opmerkingen veld op de afreken pagina. Om het te laten werken moet eerst de code hieronder in een plug-in plakken of je plakt het in de functions.php van je childtheme.

    Wat doet de code:

    Dit maakt een nieuw gedeelte na “Ordernotities” op de afrekenpagina in dat gedeelte ziet u nu “Is dit een geschenk” met een pictogram ernaast als u het vakje aanvinkt, wordt een veld weergegeven.

    Als de bestelling een geschenk is, kan de klant een e-mailadres in dat veld opgeven, als u dit doet, wordt de e-mail met de orderbevestiging verzonden naar de ontvanger van het geschenk in plaats van naar de persoon die de bestelling betaalt.

    Als deze optie wordt gebruikt, wordt een opmerking afgedrukt op de bestelling in WC Admin scherm de notitie zal u laten weten voor wie de bestelling een geschenk was (alleen de e-mail) het zal, als het wordt besteld als een geschenk, een bericht opnemen met de bestel-e-mail die naar de ontvanger van het geschenk wordt gestuurd.

    We valideren en ervoor zorgen dat het veld voor cadeau-e-mail niet leeg is als het een geschenk is en we controleren ook of het opgegeven e-mail niet hetzelfde is als de factuur-e-mail.

    Natuurlijk zorgen we er voor dat de email tekst niet wordt gebruikt als de bestelling niet als geschenk wordt besteld. Ik stel voor dat je deze code goed doorleest en aanpast waar nodig. Goed testen is de boodschap.

    WAARSCHUWING: Als je zelf code toevoegt aan je WordPress website dan is het zaak om deze goed te testen, maar ook voordat je de code toevoegt goed te backuppen. heb je nog vragen om deze code te integreren kan je ons ook advies vragen via info@webmastermagazine.eu 

    De geschenk code:

    // add gift message on checkout after the "Order Notes"
    add_action( 'woocommerce_after_order_notes', 'bdev_is_this_a_gift' );
    function bdev_is_this_a_gift() {
        $domain = 'woocommerce';
    
        ?>
        <style>p#gift_field{display:none;}</style>
        <div id="message">
        <h3><i class="fa fa-gift"></i><?php _e( ' Is dit een geschenk?', 'woocommerce' ); ?></h3>
        <?php
    
        woocommerce_form_field( 'gift_msg', array(
            'type'  => 'checkbox',
            'class' => array( 'gift-checkbox' ),
            'label' => __( 'Voor wie is dit gescenk?', 'woocommerce' ),
        ), WC()->checkout->get_value( 'cb_msg' ));
    
        woocommerce_form_field( 'gift', array(
            'type'              => 'text',
            'class'             => array('msg t_msg'),
            'label'             => __('Geef het email adres op van de ontvanger. <a href="/privacy-policy" style="text-decoration: underline">Meer informatie.</a>'),
            'placeholder'       => __('john.doe@example.com'),
        ), WC()->checkout->get_value( 'gift' ));
    
        echo '</div>';
    
        ?><script>
        jQuery(document).ready(function($) {
            var a = '#gift_field';
            $('input#gift_msg').change( function(){
                if( $(this).is(':checked') )
                    $(a).show();
                else
                    $(a).hide();
            });
        });
        </script><?php
    }
    
    // validate the gift field and display error
    add_action('woocommerce_after_checkout_validation', 'bdev_gift_validation', 20, 2 );
    function bdev_gift_validation( $data, $errors ) {
        // valide "Gift" not empty if selected
        if( isset($_POST['gift_msg']) && isset($_POST['gift']) && empty($_POST['gift']) )
            $errors->add( 'gift', __( "U heeft er voor gekozen om dit product als geschenk te verzenden maar geen email adres ingevuld", "woocommerce" ) );
    
        // validate "Gift" input email different from billing email
        if ( isset($_POST['gift']) && $data['billing_email'] === $_POST['gift'] ) {
            $errors->add( 'gift', __( "Het email adres moet verschillend zijn van uw eigen e-mail adres.", "woocommerce" ) );
        }
    }
    
    // update the gift field
    add_action( 'woocommerce_checkout_update_order_meta', 'bdev_is_this_a_gift_save');
    function bdev_is_this_a_gift_save( $order_id ) {
        $gift_recipient_address = $_POST['gift'];
        if ( ! empty( $gift_recipient_address ) )
            update_post_meta( $order_id, 'gift', sanitize_text_field( $gift_recipient_address ) );
    }
    
    // show if gift on the order page
    add_action( 'woocommerce_admin_order_data_after_order_details', 'is_this_a_gift_order_display' );
    function is_this_a_gift_order_display( $order ) {
        if( $value = $order->get_meta('gift') ) :
            echo '<div class="order_data_column">
            <h3>' . __( '<br>Geschenk voor:', 'woocommerce' ) . '</h3>
            <p>' . $value . '</p>
            </div>';
        endif;
    }
    
    // send to the gift receiver if provided
    add_filter( 'woocommerce_email_recipient_customer_completed_order', 'bdev_is_this_a_gift_replace_email_recipient', 10, 2 );
    function bdev_is_this_a_gift_replace_email_recipient( $recipient, $order ) {
        $gift_recipient = $order->get_meta('gift');
        if ( is_a( $order, 'WC_Order' ) && $order->get_meta('gift') ) 
            $recipient = $order->get_meta('gift');
        return $recipient;
    }
    
    // add text to gift reciever email
    add_action( 'woocommerce_email_before_order_table', 'bdev_this_was_a_gift', 20, 4 );
    function bdev_this_was_a_gift( $order, $sent_to_admin, $plain_text, $email ) {
    if ( $email->id == 'customer_completed_order'  && $order->get_meta('gift') == true ) {
    echo '<h2 class="gift-h">Dit is een geschenk !</h2><p class="gift-p">Uw text hier gevolgd door "<strong>HAPPYCODE</strong>" en nog tekst op het einde</p>'; } }

    Op diverse plaatste in de code kan je zelf een aantal aanpassingen doen in de tekst. Maar wees altijd voorzichtig !

    Recent Articles

    SEO How-to, Deel 1: Waaorm SEO gebruiken?

    Search engine optimization (SEO) is de configuratie van uw website om meer organisch verkeer en conversies te genereren via Google, Bing of andere zoekwebsites....

    6 WooCommerce-tips om de gebruikerservaring te verbeteren

    Met een optimale gebruikerservaring van je WooCommerce-website zal het gemakkelijker worden bezoekers te turnen in klanten en bestaande gebruikers aan te moedigen terug te...

    Jetpack 8.5 voegt een nieuw podcast-spelerblok toe

    Eerder deze maand is Jetpack 8.5 uitgebracht met een nieuw podcast-spelerblok voor het delen van audiocontent. Het configureren van het blok is net zo...

    Elementor haalt 15 miljoen op.

    Elementor heeft eerder deze week aangekondigd dat het een financieringsronde van $ 15 miljoen heeft afgesloten bij Lightspeed Venture Partners, een van de toonaangevende...

    Codesnippets: Hoe toon ik ‘gratis’ ipv 0.00 in Woocommerce

    In oudere versies van Woocommerce werd als je een gratis product had niet het bedrag getoond maar zag je staan dat het gratis was,...

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Stay on op - Ge the daily news in your inbox