{"id":380994,"date":"2026-10-18T17:07:52","date_gmt":"2026-10-18T17:07:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bd-phone-guard\/"},"modified":"2026-10-18T17:12:41","modified_gmt":"2026-10-18T17:12:41","slug":"nombar-bd-mobile-validator","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/nombar-bd-mobile-validator\/","author":23578621,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"5.2","requires_php":"7.2","requires_plugins":null,"header_name":"Nombar BD Mobile Validator","header_author":"tanvir11744","header_description":"Validates and cleans up Bangladeshi mobile numbers at checkout: Bangla digits, +880 formats, spaces and dashes all become one consistent number your courier and SMS tools can use.","assets_banners_color":"","last_updated":"2026-10-18 17:12:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":66,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tanvir11744","date":"2026-10-18 17:12:41","revision":3753370}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3753374,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3753374,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3753370,"resolution":"1","location":"assets","locale":"","width":720,"height":260},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3753370,"resolution":"2","location":"assets","locale":"","width":720,"height":260},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3753370,"resolution":"3","location":"assets","locale":"","width":1280,"height":700},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3753370,"resolution":"4","location":"assets","locale":"","width":1280,"height":948}},"screenshots":{"1":"Bangla digits, spaces and dashes are recognised live and turned into a clean number.","2":"Numbers with an invalid operator prefix are flagged before the form is submitted.","3":"WooCommerce checkout stops an obviously fake number with a clear message.","4":"Settings page: saved number format, error language, strictness and where to validate."}},"plugin_section":[],"plugin_tags":[10944,570,3148,2644,724],"plugin_category":[45],"plugin_contributors":[287398],"plugin_business_model":[],"class_list":["post-380994","plugin","type-plugin","status-publish","hentry","plugin_tags-bangla","plugin_tags-bangladesh","plugin_tags-checkout","plugin_tags-phone","plugin_tags-validation","plugin_category-ecommerce","plugin_contributors-tanvir11744","plugin_committers-tanvir11744"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/nombar-bd-mobile-validator\/assets\/icon-128x128.png?rev=3753374","icon_2x":"https:\/\/ps.w.org\/nombar-bd-mobile-validator\/assets\/icon-256x256.png?rev=3753374","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/nombar-bd-mobile-validator\/assets\/screenshot-1.png?rev=3753370","caption":"Bangla digits, spaces and dashes are recognised live and turned into a clean number."},{"src":"https:\/\/ps.w.org\/nombar-bd-mobile-validator\/assets\/screenshot-2.png?rev=3753370","caption":"Numbers with an invalid operator prefix are flagged before the form is submitted."},{"src":"https:\/\/ps.w.org\/nombar-bd-mobile-validator\/assets\/screenshot-3.png?rev=3753370","caption":"WooCommerce checkout stops an obviously fake number with a clear message."},{"src":"https:\/\/ps.w.org\/nombar-bd-mobile-validator\/assets\/screenshot-4.png?rev=3753370","caption":"Settings page: saved number format, error language, strictness and where to validate."}],"raw_content":"<!--section=description-->\n<p>Cash on delivery stores in Bangladesh lose real money when customers mistype their mobile number. The courier calls a dead number, the parcel comes back, and the SMS gateway silently drops the order updates.<\/p>\n\n<p>Nombar BD Mobile Validator fixes the number at the moment it is typed. Every valid number is cleaned and saved in the one format your tools expect, and obviously broken ones are stopped at checkout with a friendly message in Bangla or English.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Converts Bangla digits to English digits automatically: \u09e6\u09e7\u09ed\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee becomes 01712345678.<\/li>\n<li>Strips spaces, dashes, dots, brackets, plus signs and invisible characters copied out of messaging apps.<\/li>\n<li>Accepts every common way of writing the number: 01712345678, +8801712345678, 8801712345678, 008801712345678, 01712-345678 or 1712345678.<\/li>\n<li>Normalizes everything to the format you choose: 01XXXXXXXXX, 01XXX-XXXXXX or +8801XXXXXXXXX.<\/li>\n<li>Validates the 11-digit length and the operator prefix (013 to 019) and shows a clear error in Bangla or English.<\/li>\n<li>Rejects obviously fake numbers like 01700000000, 01877777777 or 01111111111.<\/li>\n<li>Checks the billing and shipping phone at WooCommerce checkout \u2014 classic checkout and the block checkout both work \u2014 plus the Addresses form and the Account details form in My Account.<\/li>\n<li>A <code>[nombar]<\/code> shortcode adds a self-validating phone field to any page or plain HTML form.<\/li>\n<li>A small PHP API for developers: <code>nombar_normalize_phone()<\/code> and <code>nombar_validate_phone()<\/code>, plus filters for prefixes, error messages and more.<\/li>\n<\/ul>\n\n<p><strong>Why it stays free<\/strong><\/p>\n\n<p>This plugin is pure PHP and a few regular expressions. It runs entirely on your own site: no API calls, no SMS, no OTP service, no external servers, nothing to pay for. It intentionally does not verify that a number is switched on or owned by the customer \u2014 real OTP verification costs money per SMS, and this plugin is designed to cost nothing.<\/p>\n\n<h4>Does it send an OTP?<\/h4>\n\n<p>No, on purpose. OTP verification requires a paid SMS gateway. Nombar BD Mobile Validator does the free part well: it makes sure the number is a real, complete, correctly formatted Bangladeshi mobile number before it reaches your orders.<\/p>\n\n<h4>Which operators are supported?<\/h4>\n\n<p>All Bangladeshi mobile prefixes: Grameenphone (013, 017), Robi (018), Airtel (016), Banglalink (014, 019) and Teletalk (015).<\/p>\n\n<h4>Does it work without WooCommerce?<\/h4>\n\n<p>Yes. Use the <code>[nombar]<\/code> shortcode on any page, or call <code>nombar_normalize_phone()<\/code> \/ <code>nombar_validate_phone()<\/code> from your own plugin or theme.<\/p>\n\n<h4>Does it support landline numbers?<\/h4>\n\n<p>No. It validates mobile numbers only, because mobile numbers are what couriers and SMS tools need. Numbers starting with the Dhaka area code 02 and other landline codes will not pass.<\/p>\n\n<h4>Can I change the valid prefixes?<\/h4>\n\n<p>Yes, with the <code>nombar_operator_prefixes<\/code> filter:<\/p>\n\n<pre><code>add_filter( 'nombar_operator_prefixes', function( $prefixes ) { $prefixes['0132'] = 'Custom'; return $prefixes; } );\n<\/code><\/pre>\n\n<h4>Why did a real-looking number get rejected?<\/h4>\n\n<p>The fake-number check rejects numbers whose last eight digits are all identical, like 01711111111. If you would rather accept anything with a valid prefix, untick the strictness option on the settings page, or use the <code>nombar_reject_repeated_digits<\/code> filter.<\/p>\n\n<h4>Does it work with the WooCommerce block checkout?<\/h4>\n\n<p>Yes. The classic checkout validates through the standard checkout hooks. The block checkout (the default on new WooCommerce installs) works too: Bangla digits are normalized before WooCommerce checks them, and anything with a bad prefix, wrong length or fake pattern is blocked when the order is placed, with the same friendly error.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>nombar-bd-mobile-validator<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to Settings \u2192 Nombar BD Mobile Validator and pick your saved number format and error language. The defaults work for most Bangladeshi stores.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20it%20rewrite%20numbers%20already%20saved%20on%20old%20orders%3F\"><h3>Will it rewrite numbers already saved on old orders?<\/h3><\/dt>\n<dd><p>No. It only touches numbers entered while the plugin is active, so your order history stays exactly as it is.<\/p><\/dd>\n<dt id=\"does%20it%20change%20the%20customer%27s%20input%20on%20screen%3F\"><h3>Does it change the customer's input on screen?<\/h3><\/dt>\n<dd><p>The live hint formats the field when the customer leaves it, so they can see the corrected number. Server-side validation is always the final authority.<\/p><\/dd>\n<dt id=\"where%20can%20i%20see%20the%20normalized%20number%3F\"><h3>Where can I see the normalized number?<\/h3><\/dt>\n<dd><p>On the WooCommerce order edit screen, in the billing (and shipping) phone field \u2014 saved in the format you chose.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: WooCommerce checkout and account validation, Bangla digit support, format normalization, [nombar] shortcode, settings page.<\/li>\n<\/ul>","raw_excerpt":"Validates and cleans up Bangladeshi mobile numbers at checkout: Bangla digits, +880 formats, spaces and dashes all become one consistent number.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380994"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tanvir11744"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380994"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380994"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380994"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380994"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380994"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}