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@wpmagazine.be

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 !

Reageer

Voer alstublieft uw commentaar in!
Please enter your name here