WP Manifestindependent plugin directory
manifest / i18n / persian-text-normalizer

Persian Text Normalizer

افزونهٔ وردپرس و ووکامرس برای یکسان‌سازی ي/ك عربی، ارقام فارسی و نیم‌فاصله در محتوا، جستجو، نامک و فرم تسویه‌حساب | Persian text normalizer for WordPress & WooCommerce

★ 0stars
v1.0.0latest · 15d ago

Install

Download persian-text-normalizer.zip From the v1.0.0 release on GitHub, Oct 8, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/kamranhajhossein/persian-text-normalizer/releases/download/v1.0.0/persian-text-normalizer.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

یکسان‌ساز متن فارسی برای وردپرس و ووکامرس

کاربر در جستجوی سایت می‌نویسد «كتاب» (با ک عربی)، محصول شما «کتاب» است، و نتیجه‌ای پیدا نمی‌شود. مشتری شماره را با ارقام فارسی «۰۹۱۲…» وارد می‌کند و تسویه‌حساب ووکامرس، پنل پیامک یا درگاه پرداخت خطا می‌دهد. یک نویسنده با کیبورد عربی «ي» تایپ می‌کند و حالا دو نشانی برای یک موضوع دارید.

این پلاگین همهٔ این‌ها را بی‌سروصدا و بدون خراب کردن چیزی درست می‌کند.

فهرست: قبل و بعد · امکانات · نصب · اصلاح محتوای قبلی · مستثنا کردن · سازگاری · سؤالات متداول · توسعه‌دهندگان

قبل و بعد

ورودی ذخیره می‌شود جستجو می‌شود در فیلد تلفن/کد پستی
كتاب هاي جديد کتاب های جدید کتاب های جدید —
سال ١٤٠٥ سال ۱۴۰۵ سال ۱۴۰۵ 1405
می‌‌‌خواهم (چند نیم‌فاصله) می‌خواهم می خواهم —
مُحَمَّـــد بدون تغییر* محمد —
خانهٔ من بدون تغییر خانه من —
۰۹۱۲۱۲۳۴۵۶۷ بدون تغییر بدون تغییر 09121234567

* حذف اِعراب و کشیده از متن ذخیره‌شده در تنظیمات قابل روشن شدن است.

چرا مهم است؟

  • فروش از دست‌رفته: کاربری که با کیبورد ویندوز یا گوشی عربی‌دار جستجو می‌کند، محصول موجود را «ناموجود» می‌بیند.
  • سفارش ثبت‌نشده: is_phone() و اعتبارسنجی بسیاری از درگاه‌ها و پنل‌های پیامک ارقام فارسی را رد می‌کنند و مشتری وسط تسویه‌حساب رها می‌کند.
  • سئو: «ي» و «ی» برای گوگل دو حرف متفاوت‌اند. نامک‌ها و عنوان‌های ناهمسان یعنی محتوای تکراری و پخش شدن اعتبار صفحه.

امکانات

کجا چه اتفاقی می‌افتد
ذخیرهٔ نوشته، برگه و محصول «ي، ى، ك» ← «ی، ک»، ارقام عربی «٠١٢» ← فارسی «۰۱۲»، نیم‌فاصله‌های تکراری یا بی‌جا حذف می‌شوند. فقط متن تغییر می‌کند؛ تگ‌ها، کلاس‌ها، لینک‌ها، بلوک‌های گوتنبرگ، <code> و <pre> دست نمی‌خورند.
جستجو (سایت و محصولات ووکامرس) حروف عربی، اِعراب و کشیده یکسان می‌شوند و نیم‌فاصله مثل فاصله حساب می‌شود؛ پس «مي‌خواهم» هم «می‌خواهم» را پیدا می‌کند و «خانهٔ» هم «خانه» را.
فرم‌ها و تسویه‌حساب ارقام فارسی و عربی در فیلدهای تلفن، موبایل، کد پستی، کد ملی، شبا و کد تأیید به انگلیسی تبدیل می‌شوند. ووکامرس کلاسیک، تسویه‌حساب بلوکی (Store API)، Contact Form 7، Gravity Forms و هر فرمی که POST می‌کند.
نامک (Slug) نامک‌های جدید یکسان ساخته می‌شوند تا نشانی تکراری نسازید. نامک‌های موجود هرگز تغییر نمی‌کنند، پس رتبهٔ سئو و لینک‌ها امن‌اند.
دیدگاه‌ها، دسته‌ها، برچسب‌ها و ویژگی‌های محصول همان یکسان‌سازی.
محتوای قدیمی ابزار «اصلاح محتوای موجود» با حالت بررسی بدون تغییر و پردازش دسته‌ای. تاریخ ویرایش، رونوشت‌ها و نامک‌ها دست نمی‌خورند.

نصب

۱. فایل persian-text-normalizer.zip را از آخرین نسخه دانلود کنید. ۲. پیشخوان ← افزونه‌ها ← افزودن ← بارگذاری افزونه. ۳. فعال کنید. همین؛ تنظیمات پیش‌فرض برای بیشتر سایت‌ها مناسب است.

تنظیمات و ابزار اصلاح در ابزارها ← یکسان‌ساز فارسی است. همان‌جا یک جعبهٔ «امتحان کنید» هست که نشان می‌دهد هر متن چطور ذخیره و جستجو می‌شود (نیم‌فاصله‌ها با رنگ زرد نمایش داده می‌شوند).

اصلاح محتوای قبلی

قبل از هر کاری پشتیبان بگیرید. بعد:

۱. «بررسی (بدون تغییر)» را بزنید تا ببینید چند نوشته و دسته نیاز به اصلاح دارند و نمونه‌ها را چک کنید. ۲. «اصلاح همه» را بزنید.

یا با WP-CLI:

wp ptn fix --dry-run                  # فقط گزارش
wp ptn fix                            # اصلاح همه
wp ptn fix --post_type=product,page   # فقط این نوع‌ها
wp ptn test "كتاب‌‌هاي ١٤٠٥"            # ببینید یک متن چطور یکسان می‌شود

مستثنا کردن یک بخش

برای آیات قرآن یا متن عربی که باید دقیقاً همان‌طور بماند:

[ptn_ignore]بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ[/ptn_ignore]

<!-- ptn:ignore -->
<p>متن عربی که نباید تغییر کند</p>
<!-- /ptn:ignore -->

شورت‌کد [ptn_ignore] در خروجی سایت هیچ اثری ندارد و فقط محتوایش را محافظت می‌کند.

فیلترها برای توسعه‌دهندگان

فیلتر کاربرد
ptn_normalizer_options تغییر گزینه‌های یکسان‌سازی محتوای ذخیره‌شده
ptn_digit_fields_pattern الگوی regex نام فیلدهایی که ارقامشان انگلیسی شود
ptn_digit_rest_routes مسیرهای REST که ارقامشان انگلیسی شود (پیش‌فرض /wc/store)
ptn_skip_post_types نوع‌هایی که هنگام ذخیره نادیده گرفته شوند
ptn_bulk_post_types نوع‌هایی که ابزار اصلاح دسته‌ای پردازش می‌کند
ptn_normalize_admin_search خاموش کردن یکسان‌سازی جستجو در پیشخوان

استفادهٔ مستقیم در کد خودتان:

$n = new PTN_Normalizer();
$n->text( 'كتاب يك' );                 // «کتاب یک»
$n->html( '<p class="ي">ي</p>' );      // فقط متن تغییر می‌کند: <p class="ي">ی</p>
PTN_Normalizer::search( 'مُحَمَّـد' );     // «محمد»
PTN_Normalizer::latin_digits( '۰۹۱۲' ); // «0912»

سازگاری

  • وردپرس ۶٫۰ به بالا، PHP ۷٫۴ تا ۸٫۳
  • ووکامرس: تسویه‌حساب کلاسیک و بلوکی، سازگار اعلام‌شده با HPOS
  • ویرایشگر بلوکی (گوتنبرگ) و ویرایشگر کلاسیک. صفحه‌سازهایی مثل المنتور که محتوا را در متادیتا نگه می‌دارند فعلاً پوشش داده نمی‌شوند؛ جستجو و فرم‌ها در آن‌ها هم کار می‌کنند.
  • Contact Form 7، Gravity Forms، WPForms و هر فرمی که با POST ارسال می‌شود
  • Yoast و Rank Math (عنوان و محتوای یکسان‌شده را می‌خوانند؛ نامک‌های موجود تغییر نمی‌کنند)
  • پایگاه دادهٔ MySQL/MariaDB و SQLite

سؤالات متداول

محتوای قبلی‌ام خودکار عوض می‌شود؟

نه. فقط محتوایی که از این به بعد ذخیره می‌شود یکسان می‌شود. برای محتوای قبلی باید خودتان از «اصلاح محتوای موجود» یا wp ptn fix استفاده کنید؛ اول هم حالت بررسی بدون تغییر را اجرا کنید.

نشانی‌های فعلی‌ام خراب می‌شوند؟ رتبهٔ گوگل چه می‌شود؟

نه. نامک موجود هیچ‌وقت تغییر نمی‌کند، نه هنگام ذخیرهٔ دوباره و نه در اصلاح دسته‌ای. جستجوی نشانی‌ها هم دست‌نخورده می‌ماند، پس لینک‌های قدیمی با «ي» همچنان کار می‌کنند.

متن عربی یا آیات قرآن سایتم خراب می‌شود؟

اِعراب به‌صورت پیش‌فرض حفظ می‌شود. اگر می‌خواهید حتی «ي» و «ك» عربی هم بماند، آن بخش را داخل [ptn_ignore] بگذارید (پایین‌تر توضیح داده شده).

اگر پلاگین را غیرفعال کنم چه می‌شود؟

محتوای یکسان‌شده همان‌طور می‌ماند که چیز خوبی است، و با حذف پلاگین فقط تنظیماتش پاک می‌شود. هیچ جدول یا دادهٔ اضافه‌ای در پایگاه داده نمی‌سازد.

روی سایت بزرگ با هزاران محصول کند نیست؟

نه. متن‌هایی که حرف فارسی و عربی ندارند فوراً رد می‌شوند. اصلاح دسته‌ای هم ۵۰ تایی (در WP-CLI ۲۰۰ تایی) جلو می‌رود و مستقیم در پایگاه داده می‌نویسد، بدون ساختن رونوشت.

جستجوی «میخواهم» بدون نیم‌فاصله «می‌خواهم» را پیدا می‌کند؟

نه. جستجوی وردپرس کلمه‌ها را با LIKE مقایسه می‌کند و «میخواهم» یک کلمهٔ پیوسته است. برعکسش، یعنی «می‌خواهم» یا «می خواهم» که «میخواهم» یا «می‌خواهم» را پیدا کنند، کار می‌کند.

چه چیزی را عمداً تغییر نمی‌دهد

  • ارقام انگلیسی داخل متن (فقط در فیلدهای عددی فرم‌ها تبدیل انجام می‌شود).
  • «ة» به «ه» (پیش‌فرض خاموش؛ از تنظیمات روشن می‌شود).
  • اِعراب و کشیده در متن ذخیره‌شده (پیش‌فرض خاموش؛ جستجو همیشه آن‌ها را نادیده می‌گیرد).
  • نامک‌ها و نشانی‌های موجود، تاریخ ویرایش و رونوشت‌ها.
  • تگ‌ها و ویژگی‌های HTML، کامنت‌های بلوک گوتنبرگ، `

Releases

1 release. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.0.0 latest
Oct 8, 2026 15d ago
persian-text-normalizer.zip
0