دعنا نتخيل أنك تريد إضافة حقل مخصص للخروج (وليس حقل فواتير أو شحن إضافي) في صفحة WooCommerce Checkout. على سبيل المثال ، قد يكون رقم ترخيص العميل – وهذا ليس له علاقة بالفوترة ولا علاقة له بالشحن.
من الناحية المثالية ، قد يكون هذا شيئًا يجب أن يظهر أعلى ملاحظات طلب الخروج – لذا نعم ، ليس في نموذج الفوترة أو الشحن. إذن ، إليك كيفية القيام بذلك – آمل أن يساعدك على فهم أن كل شيء ممكن!
إليك حقل الخروج المخصص الجديد ، المعروض عمداً خارج نماذج الفوترة / الشحن.
مقتطف PHP (الجزء 1 من 3): إضافة حقل جديد @ WooCommerce Checkout
هنا نعرض الحقل الجديد في صفحة WooCommerce Checkout ، وتحديدًا أعلى “ملاحظات الطلب” ، والتي تظهر عادةً في عمود الشحن.
معرّف الحقل الجديد هو ” License_no ” ، وهو أمر مفيد للتذكر في الجزأين 2 و 3.
/**
* @snippet Add Custom Field @ WooCommerce Checkout Page
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @testedwith WooCommerce 3.8
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_action( 'woocommerce_before_order_notes', 'bbloomer_add_custom_checkout_field' );
function bbloomer_add_custom_checkout_field( $checkout ) {
$current_user = wp_get_current_user();
$saved_license_no = $current_user->license_no;
woocommerce_form_field( 'license_no', array(
'type' => 'text',
'class' => array( 'form-row-wide' ),
'label' => 'License Number',
'placeholder' => 'CA12345678',
'required' => true,
'default' => $saved_license_no,
), $checkout->get_value( 'license_no' ) );
}
مقتطف PHP (الجزء 2 من 3): تحقق من صحة حقل الخروج الجديد
الآن ، بمجرد معالجة الخروج ، نريد التأكد من أن حقلنا ليس فارغًا. تذكر أننا اخترنا “required” => true مما يعني أن الحقل سيحتوي على علامة مطلوبة بجانب التسمية الخاصة به. ومع ذلك ، هذا لا يكفي – ما زلنا بحاجة إلى إنشاء رسالة خطأ إذا كان حقلنا فارغًا.
/**
* @snippet Validate Custom Field @ WooCommerce Checkout Page
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @testedwith WooCommerce 3.8
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_action( 'woocommerce_checkout_process', 'bbloomer_validate_new_checkout_field' );
function bbloomer_validate_new_checkout_field() {
if ( ! $_POST['license_no'] ) {
wc_add_notice( 'Please enter your Licence Number', 'error' );
}
}
مقتطف PHP (الجزء 3 من 3): احفظ وأظهر New Field @ WooCommerce الطلبات ورسائل البريد الإلكتروني
إذا تم تمرير التحقق ، تقوم WooCommerce بمعالجة الأمر. لكن قيمة الحقل الجديدة تضيع ، حيث لا توجد وظيفة “تخزن” تلك القيمة في ما يسمى “ترتيب البيانات الوصفية”. نحتاج إلى الحفظ وكذلك لعرض قيمة الحقل داخل الطلبات ورسائل البريد الإلكتروني الخاصة بالطلب.
/**
* @snippet Save & Display Custom Field @ WooCommerce Order
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @testedwith WooCommerce 3.8
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_action( 'woocommerce_checkout_update_order_meta', 'bbloomer_save_new_checkout_field' );
function bbloomer_save_new_checkout_field( $order_id ) {
if ( $_POST['license_no'] ) update_post_meta( $order_id, '_license_no', esc_attr( $_POST['license_no'] ) );
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'bbloomer_show_new_checkout_field_order', 10, 1 );
function bbloomer_show_new_checkout_field_order( $order ) {
$order_id = $order->get_id();
if ( get_post_meta( $order_id, '_license_no', true ) ) echo '<p><strong>License Number:</strong> ' . get_post_meta( $order_id, '_license_no', true ) . '</p>';
}
add_action( 'woocommerce_email_after_order_table', 'bbloomer_show_new_checkout_field_emails', 20, 4 );
function bbloomer_show_new_checkout_field_emails( $order, $sent_to_admin, $plain_text, $email ) {
if ( get_post_meta( $order->get_id(), '_license_no', true ) ) echo '<p><strong>License Number:</strong> ' . get_post_meta( $order->get_id(), '_license_no', true ) . '</p>';
}
المنشورات ذات الصلة:
WooCommerce: أضف حقل رقم المنزل @ Checkout
دليل تخصيص حقول WooCommerce Checkout
WooCommerce: أضف حقل “تأكيد عنوان البريد الإلكتروني” @ Checkout
WooCommerce: تحويل حقل الخروج من العنوان إلى القائمة المنسدلة
WooCommerce: إخفاء حقول فواتير تسجيل الخروج إذا كان Virtual Product @ Cart
WooCommerce: عرض أخطاء الحقول المطلوبة “Inline” @ Checkout
WooCommerce: أضف هاتف الشحن @ Checkout
WooCommerce: أعد تسمية تسمية “الولاية” @ Checkout
WooCommerce: نقل ملاحظات الطلب @ الخروج
WooCommerce: Maxlength و Minlength لحقول الخروج
أين تضيف هذا المقتطف؟
يمكنك وضع مقتطفات PHP في الجزء السفلي من ملف function.php القالب الفرعي الخاص بك (احذف “؟>” إذا كان لديك هناك). من ناحية أخرى ، ينتقل CSS في ملف style.css الخاص بسمة الطفل. تأكد من أنك تعرف ما تفعله عند تحرير مثل هذه الملفات – إذا كنت بحاجة إلى مزيد من الإرشادات ، فيرجى إلقاء نظرة على الفيديو التعليمي المجاني الخاص بي “أين تضع تخصيص WooCommerce؟”
هل هذا المقتطف (لا يزال) يعمل؟
يرجى إعلامي في التعليقات إذا كان كل شيء يعمل كما هو متوقع. يسعدني مراجعة المقتطف إذا أبلغت بخلاف ذلك (يرجى تقديم لقطات شاشة). لقد اختبرت هذا الكود مع موضوع Storefront وإصدار WooCommerce المذكور أعلاه واستضافة صديقة لـ وورد بريس على PHP 7.3.
إذا كنت تعتقد أن هذا الرمز وفر لك الوقت والمال ، فلا تتردد في الانضمام إلى أكثر من 14000 مشترك في WooCommerce Weekly للحصول على تحديثات منشورات المدونة أو أكثر من 250 من مؤيدي Business Bloomer لمدة 365 يومًا من مزايا WooCommerce . شكرا لكم مقدما 🙂
هل تحتاج إلى مساعدة في WooCommerce؟
تحقق من دروس الفيديو المجانية هذه. يمكنك تعلم كيفية تخصيص WooCommerce بدون مكونات إضافية غير ضرورية ، وكيفية تكوين إعدادات البرنامج المساعد WooCommerce بشكل صحيح وحتى كيفية إتقان استكشاف أخطاء WooCommerce في حالة حدوث خطأ!