/** * 1. نمایش فیلدهای سال و ماه تولد در فرم پرداخت (بعد از جزئیات صورتحساب) */ add_action( 'woocommerce_after_checkout_billing_form', 'yasin_add_birth_date_fields' ); function yasin_add_birth_date_fields( $checkout ) { echo '
'; echo '

تاریخ تولد

'; echo '
'; // تنظیم آرایه ماه‌های شمسی $months = array( '' => 'ماه تولد را انتخاب کنید', 'فروردین' => 'فروردین', 'اردیبهشت' => 'اردیبهشت', 'خرداد' => 'خرداد', 'تیر' => 'تیر', 'مرداد' => 'مرداد', 'شهریور' => 'شهریور', 'مهر' => 'مهر', 'آبان' => 'آبان', 'آذر' => 'آذر', 'دی' => 'دی', 'بهمن' => 'بهمن', 'اسفند' => 'اسفند' ); // تنظیم آرایه سال‌های شمسی (از 1300 تا سال جاری) $years = array('' => 'سال تولد را انتخاب کنید'); $current_year = 1404; // یا محاسبه پویا for ( $i = $current_year; $i >= 1300; $i-- ) { $years[$i] = $i; } // فیلد ماه تولد woocommerce_form_field( 'billing_birth_month', array( 'type' => 'select', 'class' => array('form-row-first'), 'label' => 'ماه تولد', 'required' => true, 'options' => $months, 'priority' => 100, ), $checkout->get_value( 'billing_birth_month' ) ); // فیلد سال تولد woocommerce_form_field( 'billing_birth_year', array( 'type' => 'select', 'class' => array('form-row-last'), 'label' => 'سال تولد', 'required' => true, 'options' => $years, 'priority' => 110, ), $checkout->get_value( 'billing_birth_year' ) ); echo '
'; echo '
'; } /** * 2. بررسی الزامی بودن فیلدها (Validation) */ add_action( 'woocommerce_checkout_process', 'yasin_validate_birth_date_fields' ); function yasin_validate_birth_date_fields() { // بررسی انتخاب ماه if ( empty( $_POST['billing_birth_month'] ) ) { wc_add_notice( __( 'لطفاً ماه تولد خود را انتخاب کنید.', 'woocommerce' ), 'error' ); } // بررسی انتخاب سال if ( empty( $_POST['billing_birth_year'] ) ) { wc_add_notice( __( 'لطفاً سال تولد خود را انتخاب کنید.', 'woocommerce' ), 'error' ); } } /** * 3. ذخیره اطلاعات در دیتابیس سفارش */ add_action( 'woocommerce_checkout_update_order_meta', 'yasin_save_birth_date_fields' ); function yasin_save_birth_date_fields( $order_id ) { if ( ! empty( $_POST['billing_birth_month'] ) ) { update_post_meta( $order_id, '_billing_birth_month', sanitize_text_field( $_POST['billing_birth_month'] ) ); } if ( ! empty( $_POST['billing_birth_year'] ) ) { update_post_meta( $order_id, '_billing_birth_year', sanitize_text_field( $_POST['billing_birth_year'] ) ); } } /** * 4. نمایش در صفحه ویرایش سفارش (پنل مدیریت) */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'yasin_display_birth_date_in_admin_order_meta', 10, 1 ); function yasin_display_birth_date_in_admin_order_meta($order){ $birth_month = get_post_meta( $order->get_id(), '_billing_birth_month', true ); $birth_year = get_post_meta( $order->get_id(), '_billing_birth_year', true ); if ( $birth_month && $birth_year ) { echo '

' . __( 'تاریخ تولد', 'woocommerce' ) . ': ' . $birth_year . ' / ' . $birth_month . '

'; } } /** * 5. نمایش در ایمیل‌های ووکامرس (ارسال به مشتری و مدیر) */ add_filter( 'woocommerce_email_order_meta_fields', 'yasin_add_birth_date_to_emails', 10, 3 ); function yasin_add_birth_date_to_emails( $fields, $sent_to_admin, $order ) { $birth_month = get_post_meta( $order->get_id(), '_billing_birth_month', true ); $birth_year = get_post_meta( $order->get_id(), '_billing_birth_year', true ); if ( $birth_month && $birth_year ) { $fields['birth_date'] = array( 'label' => __( 'تاریخ تولد', 'woocommerce' ), 'value' => $birth_year . ' / ' . $birth_month, ); } return $fields; } ?> Page Not Found - جانبی باریش

چیزی در اینجا پیدا نشد.

question