Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/barmaandev/searchdoon/archive/refs/heads/main.zipتوسعهدهنده: Barmaan Shokoohi
نرمالایز کردن چیست؟
نرمالایز کردن در این افزونه به معنای تبدیل متن فارسی به فرم استاندارد و قابل جستجو است. این فرآیند شامل:
- تبدیل کاراکترهای عربی به فارسی: تبدیل حروف عربی (ي، ك، ة) به معادل فارسی (ی، ک، ه)
- یکسانسازی فاصلهها: حذف فاصلههای اضافی و تبدیل انواع مختلف فاصله به فاصله استاندارد
- حذف کلمات اضافی: حذف کلمات توقف (stopwords) که در جستجو مفید نیستند
- تولید کلمات کلیدی: ایجاد کلمات کلیدی بهینه برای جستجو
چرا نرمالایز کردن مهم است؟
در زبان فارسی، یک کلمه ممکن است به شکلهای مختلف نوشته شود:
- "مردک" یا "مردك" (ک عربی یا فارسی)
- "خانهای" یا "خانه ای" (با یا بدون نیمفاصله)
- "یادگیری" یا "يادگيري" (ی عربی یا فارسی)
نرمالایز کردن این تفاوتها را برطرف کرده و جستجو را دقیقتر میکند.
این افزونه برای نرمالایز کردن نام و توضیحات محصولات فارسی در وردپرس طراحی شده است. این افزونه مشکلات جستجو در متن فارسی را حل میکند و فیلدهای متا برای بهبود جستجو اضافه میکند.
توسعهدهنده: Barmaan Shokoohi
ویژگیها
🔧 نرمالایز کردن متن فارسی
- تبدیل کاراکترهای عربی به فارسی (ی، ک، ه)
- نرمالایز کردن فاصلهها و اعداد
- حذف کلمات اضافی فارسی
📊 پردازش دستهای
- پردازش خودکار تمام محصولات موجود
- نمایش پیشرفت در زمان واقعی
- عدم تداخل با عملکرد سایت
- قابلیت توقف و ادامه پردازش
🎯 بهبود جستجو
- بهبود جستجوی WordPress
- نتایج جستجوی دقیقتر
- سورت نهایی بر اساس جدیدترین محصولات موجود
- نمایش محصولات ناموجود در انتها
📱 رابط کاربری فارسی
- رابط کاربری کاملاً فارسی
- پشتیبانی از RTL
- طراحی ریسپانسیو
- گزارشگیری کامل
نصب و راهاندازی
1. نصب افزونه
- فایلهای افزونه را در پوشه
wp-content/plugins/searchdoonآپلود کنید - از طریق پنل مدیریت وردپرس، افزونه را فعال کنید
- به بخش "ابزارها > سرچدون" بروید
2. تنظیمات اولیه
- اندازه دسته پردازش را تنظیم کنید (پیشنهاد: 50)
- گزینه حذف کلمات اضافی را فعال کنید
- تنظیمات را ذخیره کنید
3. شروع پردازش
- روی "شروع پردازش دستهای" کلیک کنید
- پیشرفت را مشاهده کنید
- منتظر تکمیل پردازش بمانید
نحوه استفاده
کلید متا برای دادههای نرمالایز شده
دادههای نرمالایز شده در کلید متای زیر ذخیره میشوند:
$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);
جستجو با استفاده از WP_Query
$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) و خط جدید: بسته به متن، به فاصلهٔ معمولی تبدیل یا تراشیده میشوند
کلمات توقف (Stopwords) پیشفرض
- از
- به
- در
- با
- برای
- که
- این
- آن
- را
- و
- یا
API و هوکها
هوکهای موجود
// قبل از نرمالایز کردن
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);
عیبیابی
مشکلات رایج
1. پردازش متوقف میشود
- علت: محدودیت حافظه یا زمان اجرا
- راهحل: اندازه دسته را کاهش دهید
2. جستجو بهبود نمییابد
- علت: محصولات نرمالایز نشدهاند
- راهحل: پردازش دستهای را اجرا کنید
3. خطای پایگاه داده
- علت: جدول پیشرفت ایجاد نشده
- راهحل: افزونه را غیرفعال و دوباره فعال کنید
لاگها
// فعال کردن لاگها
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+
تغییرات نسخه
نسخه 1.0.0
- انتشار اولیه
- نرمالایز کردن متن فارسی
- پردازش دستهای
- رابط کاربری فارسی
- بهبود جستجو
مشارکت
برای مشارکت در توسعه این افزونه:
- کد را fork کنید
- شاخه جدید ایجاد کنید
- تغییرات را commit کنید
- Pull Request ارسال کنید
لایسنس
این افزونه تحت لایسنس GPL v3 یا بالاتر منتشر شده است.
تماس
- وبسایت: https://barmaan.dev
- ایمیل: barmaan.dev@gmail.com
- گیتهاب: https://github.com/barmaandev
نکته: قبل از استفاده در محیط تولید، حتماً از سایت خود پشتیبان تهیه کنید.