הוספת חתימה דיגיטלית לעמוד מוצר

הוספת חתימה דיגיטלית בעמוד מוצר של ווקומרס – איך עושים את זה 

הוספת חתימה דיגיטלית לעמוד מוצר

כדי לאפשר את האופציה לחתימה דיגיטלית אנחנו נצטרך להוסיף קוד סניפט לתבנית או לתוסף יעודי. אני ממליץ להוסיף באמצעות תוסף של Code Snippets. מדובר בתוסף קליל שלא מכביד על המערכת יתר על המידה.

אנחנו נתקין אותו ונוסיף קוד סניפט חדש – את הקוד הבא

				
					// הוספת שדה החתימה לעמוד המוצר עם Signature Pad
add_action('woocommerce_before_add_to_cart_button', 'add_signature_pad_field');
function add_signature_pad_field() {
    ?>
    <div class="signature-field">
        <label for="customer_signature">חתימה דיגיטלית:</label>
        <canvas id="signature-pad" width="400" height="200" style="border:1px solid #000;"></canvas>
        <br>
        <button type="button" id="clear-signature">נקה חתימה</button>
        <textarea id="customer_signature" name="customer_signature" style="display:none;"></textarea>
    </div>
    <script data-minify="1" src="https://www.ymdigital.co.il/wp-content/cache/min/1/npm/signature_pad@4.0.0/dist/signature_pad.umd.min.js?ver=1747251163" data-rocket-defer defer></script>
    <script>window.addEventListener('DOMContentLoaded', function() {
        var canvas = document.getElementById('signature-pad');
        var signaturePad = new SignaturePad(canvas);

        // כאשר לוחצים על "נקה חתימה"
        document.getElementById('clear-signature').addEventListener('click', function () {
            signaturePad.clear();
        });

        // לפני הוספת מוצר לעגלה - שמירת החתימה בתור Base64 בטקסט
        jQuery('form.cart').on('submit', function () {
            if (!signaturePad.isEmpty()) {
                var dataUrl = signaturePad.toDataURL();
                document.getElementById('customer_signature').value = dataUrl;
            } else {
                alert('אנא חתם לפני הוספת המוצר לעגלה.');
                return false;
            }
        });
    });</script>
    <?php
}

// שמירת החתימה בעגלת הקניות ושמירת הקובץ בספריית ההעלאות
add_action('woocommerce_add_cart_item_data', 'save_signature_pad_to_cart', 10, 2);
function save_signature_pad_to_cart($cart_item_data, $product_id) {
    if (isset($_POST['customer_signature']) && !empty($_POST['customer_signature'])) {
        $signature_data = $_POST['customer_signature'];

        // שמירת Base64 כקובץ תמונה בשרת
        $upload_dir = wp_upload_dir();
        $upload_path = $upload_dir['basedir'] . '/signatures/';
        if (!file_exists($upload_path)) {
            mkdir($upload_path, 0755, true);
        }

        // יצירת שם קובץ ייחודי
        $file_name = uniqid() . '.png';
        $file_path = $upload_path . $file_name;
        $file_url = $upload_dir['baseurl'] . '/signatures/' . $file_name;

        // הסרת ה-Base64 header ושמירת התמונה כקובץ PNG
        $signature_data = str_replace('data:image/png;base64,', '', $signature_data);
        $signature_data = str_replace(' ', '+', $signature_data);
        $decoded_data = base64_decode($signature_data);
        file_put_contents($file_path, $decoded_data);

        // שמירת הקובץ בעגלת הקניות
        $cart_item_data['customer_signature'] = $file_url;
    }
    return $cart_item_data;
}

// הצגת החתימה בעגלת הקניות ובדף התשלום
add_filter('woocommerce_get_item_data', 'display_signature_pad_in_cart', 10, 2);
function display_signature_pad_in_cart($item_data, $cart_item) {
    if (isset($cart_item['customer_signature'])) {
        $item_data[] = array(
            'name' => 'חתימה דיגיטלית',
            'value' => '<img decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" style="max-width: 200px;" data-lazy-src="' . esc_url($cart_item['customer_signature']) . '" /><noscript><img decoding="async" src="' . esc_url($cart_item['customer_signature']) . '" style="max-width: 200px;" /></noscript>'
        );
    }
    return $item_data;
}

// שמירת החתימה עם פרטי ההזמנה
add_action('woocommerce_checkout_create_order_line_item', 'save_signature_pad_to_order_items', 10, 4);
function save_signature_pad_to_order_items($item, $cart_item_key, $values, $order) {
    if (isset($values['customer_signature'])) {
        $item->add_meta_data('חתימה דיגיטלית', $values['customer_signature'], true);
    }
}





add_action('wp_head', 'custom_signature_field_styles');
function custom_signature_field_styles() {
    ?>
    <style>
        .signature-field canvas {
            width: 100% !important;
            height: auto;
        }
    </style>
    <?php
}

				
			

חתימה דיגטלית בעמוד מוצר ווקומרס

הקוד יוסיף לנו אופציה ממש לקשקש עם עט או עם האצבע. וגם יוסיף לנו כפתור לניקוי חתימה. כמו כן נקבל את החתימה עם ההזמנה של ווקומרס וכך יהיה לנו תיעוד של החתימה הדיגיטלית

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *