توسعهدهنده: Barmaan Shokoohi
نرمالایز کردن در این افزونه به معنای تبدیل متن فارسی به فرم استاندارد و قابل جستجو است. این فرآیند شامل:
- تبدیل کاراکترهای عربی به فارسی: تبدیل حروف عربی (ي، ك، ة) به معادل فارسی (ی، ک، ه)
- یکسانسازی فاصلهها: حذف فاصلههای اضافی و تبدیل انواع مختلف فاصله به فاصله استاندارد
- حذف کلمات اضافی: حذف کلمات توقف (stopwords) که در جستجو مفید نیستند
- تولید کلمات کلیدی: ایجاد کلمات کلیدی بهینه برای جستجو
در زبان فارسی، یک کلمه ممکن است به شکلهای مختلف نوشته شود:
- "مردک" یا "مردك" (ک عربی یا فارسی)
- "خانهای" یا "خانه ای" (با یا بدون نیمفاصله)
- "یادگیری" یا "يادگيري" (ی عربی یا فارسی)
نرمالایز کردن این تفاوتها را برطرف کرده و جستجو را دقیقتر میکند.
این افزونه برای نرمالایز کردن نام و توضیحات محصولات فارسی در وردپرس طراحی شده است. این افزونه مشکلات جستجو در متن فارسی را حل میکند و فیلدهای متا برای بهبود جستجو اضافه میکند.
توسعهدهنده: Barmaan Shokoohi
- تبدیل کاراکترهای عربی به فارسی (ی، ک، ه)
- نرمالایز کردن فاصلهها و اعداد
- حذف کلمات اضافی فارسی
- پردازش خودکار تمام محصولات موجود
- نمایش پیشرفت در زمان واقعی
- عدم تداخل با عملکرد سایت
- قابلیت توقف و ادامه پردازش
- بهبود جستجوی WordPress
- نتایج جستجوی دقیقتر
- سورت نهایی بر اساس جدیدترین محصولات موجود
- نمایش محصولات ناموجود در انتها
- رابط کاربری کاملاً فارسی
- پشتیبانی از RTL
- طراحی ریسپانسیو
- گزارشگیری کامل
- فایلهای افزونه را در پوشه
wp-content/plugins/searchdoonآپلود کنید - از طریق پنل مدیریت وردپرس، افزونه را فعال کنید
- به بخش "ابزارها > سرچدون" بروید
- اندازه دسته پردازش را تنظیم کنید (پیشنهاد: 50)
- گزینه حذف کلمات اضافی را فعال کنید
- تنظیمات را ذخیره کنید
- روی "شروع پردازش دستهای" کلیک کنید
- پیشرفت را مشاهده کنید
- منتظر تکمیل پردازش بمانید
دادههای نرمالایز شده در کلید متای زیر ذخیره میشوند:
$meta_key = '_searchdoon_data';$normalized_data = array(
'title' => 'عنوان نرمالایز شده محصول',
'content' => 'محتوای نرمالایز شده محصول',
'excerpt' => 'خلاصه نرمالایز شده محصول',
'search_keywords' => 'کلمات کلیدی تولید شده برای جستجو',
'normalized_at' => '2024-01-01 12:00:00'
);$args = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => '_searchdoon_data',
'value' => 'کلمه جستجو',
'compare' => 'LIKE'
)
)
);
$products = get_posts($args);$args = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => '_searchdoon_data',
'value' => 'کلمه کلیدی',
'compare' => 'LIKE'
)
)
);
$products = get_posts($args);$search_term = 'کلمه جستجو';
$args = array(
'post_type' => 'product',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_searchdoon_data',
'value' => $search_term,
'compare' => 'LIKE'
),
array(
'key' => '_searchdoon_data',
'value' => $search_term,
'compare' => 'LIKE'
)
)
);
$products = get_posts($args);$query = new WP_Query(array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => '_searchdoon_data',
'value' => 'کلمه جستجو',
'compare' => 'LIKE'
)
),
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC'
));
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// نمایش محصول
}
wp_reset_postdata();
}// شروع پردازش تمام محصولات
$normalizer = BWD_Persian_Product_Normalizer::get_instance();
$normalizer->process_all_products();// نرمالایز کردن متن فارسی
$normalized_text = $normalizer->normalize_persian_text($text);// دریافت دادههای نرمالایز شده محصول
$normalized_data = get_post_meta($product_id, '_searchdoon_data', true);persian-product-normalizer/
├── persian-product-normalizer.php # فایل اصلی افزونه
├── templates/
│ └── admin-page.php # قالب صفحه مدیریت
├── assets/
│ ├── js/
│ │ └── admin.js # اسکریپتهای مدیریت
│ └── css/
│ └── admin.css # استایلهای مدیریت
└── README.md # مستندات
- مقدار پیشفرض: 50
- محدوده: 10 تا 200
- توصیه: برای سایتهای بزرگتر، مقدار کمتری انتخاب کنید
- کلمات حذف شده: از، به، در، با، برای، که، این، آن، را، و، یا
- قابل تنظیم: بله
- توصیه: برای جستجوی بهتر فعال کنید
- ي ⇢ ی
- ك ⇢ ک
- ة ⇢ ه
- ئ ⇢ ی
- أ ⇢ ا
- إ ⇢ ا
- ٱ ⇢ ا
- ؤ ⇢ و
- فاصله معمولی (U+0020): چند فاصلهٔ پیاپی به یک فاصله تبدیل میشود
- فاصلهٔ غیرقابلشکستن NBSP (U+00A0): به فاصلهٔ معمولی تبدیل میشود
- نیمفاصله ZWNJ (U+200C): در صورت لزوم حفظ میشود؛ فاصلههای نامعتبر اطراف حذف میشوند
- تب (U+0009) و خط جدید: بسته به متن، به فاصلهٔ معمولی تبدیل یا تراشیده میشوند
- از
- به
- در
- با
- برای
- که
- این
- آن
- را
- و
- یا
// قبل از نرمالایز کردن
do_action('bwd_before_normalize', $post_id, $post);
// بعد از نرمالایز کردن
do_action('bwd_after_normalize', $post_id, $normalized_data);
// قبل از پردازش دستهای
do_action('bwd_before_batch_process');
// بعد از پردازش دستهای
do_action('bwd_after_batch_process', $processed_count);// فیلتر کردن کلمات اضافی
$stopwords = apply_filters('bwd_stopwords', $default_stopwords);
// فیلتر کردن کاراکترهای جایگزین
$replacements = apply_filters('bwd_character_replacements', $default_replacements);
// فیلتر کردن اندازه دسته
$batch_size = apply_filters('bwd_batch_size', 50);- علت: محدودیت حافظه یا زمان اجرا
- راهحل: اندازه دسته را کاهش دهید
- علت: محصولات نرمالایز نشدهاند
- راهحل: پردازش دستهای را اجرا کنید
- علت: جدول پیشرفت ایجاد نشده
- راهحل: افزونه را غیرفعال و دوباره فعال کنید
// فعال کردن لاگها
define('BWD_DEBUG', true);
// مشاهده لاگها
error_log('BWD Debug: ' . $message);- استفاده از پردازش دستهای
- کش کردن نتایج
- بهینهسازی کوئریهای SQL
- اعتبارسنجی ورودیها
- استفاده از nonce
- بررسی مجوزهای کاربر
- WordPress 5.0+
- PHP 7.4+
- WooCommerce 5.0+ (اختیاری)
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
- انتشار اولیه
- نرمالایز کردن متن فارسی
- پردازش دستهای
- رابط کاربری فارسی
- بهبود جستجو
برای مشارکت در توسعه این افزونه:
- کد را fork کنید
- شاخه جدید ایجاد کنید
- تغییرات را commit کنید
- Pull Request ارسال کنید
این افزونه تحت لایسنس GPL v3 یا بالاتر منتشر شده است.
- وبسایت: https://barmaan.dev
- ایمیل: barmaan.dev@gmail.com
- گیتهاب: https://github.com/barmaandev
نکته: قبل از استفاده در محیط تولید، حتماً از سایت خود پشتیبان تهیه کنید.