صورت مسئله: نوشتن متنهای بینهایت طولانی و به هم ریختن فاکتور
در صفحه تسویه حساب (Checkout) ووکامرس، فیلدی به نام «یادداشت سفارش» یا توضیحات تکمیلی وجود دارد. این فیلد به صورت پیشفرض هیچ محدودیتی در تعداد کاراکتر ندارد. برخی مشتریان یا رباتهای اسپمر متنهای بسیار طولانی، لینک یا کاراکترهای عجیب در آن وارد میکنند که منجر به بههمریختگی فرمت چاپ فاکتورها، ارسال پیامکهای طولانی با هزینه سنگین و پر شدن رکوردهای جدول سفارشات میشود.
راهکار فنی و شیوه عملکرد کد
با استفاده از فیلتر قدرتمند woocommerce_checkout_fields در ووکامرس، مشخصه maxlength و اعتبارسنجی را روی فیلد order_comments اعمال میکنیم تا مشتری نتواند بیش از حد مجاز (مثلاً ۲۰۰ کاراکتر) تایپ کند.
قطعه کد استاندارد محدودسازی طول فیلد یادداشت سفارش
کد فیلتر زیر را در سایت ووکامرسی خود درج کنید:
/*
* Limit Order Notes Character Length in WooCommerce Checkout
* Sets maxlength and placeholder hint to prevent spam and formatting issues
* Mahdi Jafarzadeh | WPWM
*/
add_filter('woocommerce_checkout_fields', 'wpwm_limit_order_notes_length');
function wpwm_limit_order_notes_length($fields) {
// تعیین سقف حداکثر کاراکتر مجاز (قابل تنظیم)
$max_length = 200;
if (isset($fields['order']['order_comments'])) {
$fields['order']['order_comments']['maxlength'] = $max_length;
$fields['order']['order_comments']['placeholder'] = sprintf('یادداشت یا توضیحات سفارش (حداکثر %d کاراکتر)...', $max_length);
}
return $fields;
}
// اعتبارسنجی سمت سرور در صورت دور زدن فرانتاند
add_action('woocommerce_after_checkout_validation', function($data, $errors) {
if (!empty($data['order_comments']) && mb_strlen($data['order_comments']) > 200) {
$errors->add('validation', 'توضیحات سفارش نمیتواند بیش از ۲۰۰ کاراکتر باشد.');
}
}, 10, 2);
نحوه استفاده و محل قرارگیری کد
- کد را به فایل
functions.phpقالب یا پلاگین اختصاصی خود اضافه کنید. - به صفحه تسویه حساب بروید و فیلد توضیحات را تست کنید تا محدودیت تعداد کاراکتر را مشاهده نمایید.
نکات مهم ایمنی و نگهداری
- عدد ۲۰۰ کاراکتر برای نوشتن مواردی مانند ساعت تحویل یا تذکر به پیک کاملاً استاندارد و کافی است. در صورت تمایل میتوانید عدد را در دو خط کد بالا تغییر دهید.
- به دلیل داشتن ولیدیشن سمت سرور (Server-side validation)، حتی در صورت دستکاری HTML توسط کاربران، هیچ متنی بیشتر از سقف ذخیره نخواهد شد.
💡 قصد شخصیسازی کامل فرآیند خرید را دارید؟ تیم ما در زمینه طراحی و برنامهنویسی افزونه اختصاصی ووکامرس آماده افزودن فیلدهای دلخواه، زمانبندی ارسال و سیستمهای پیامکی است.
دیدگاهها و پرسشها
پاسخها، تجربهها و دیدگاههای کاربران در یک گفتوگوی منظم.
گفتوگوهای کاربران
جدیدترین دیدگاهها در ابتدااولین پرسش یا تجربه را ثبت کنید؛ ایمیلتان نمایش داده نمیشود.