| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .. | ||
| assets | ||
| includes | ||
| languages | ||
| templates | ||
| index.php | ||
| README.md | ||
| shabake-tamin.php | ||
| uninstall.php | ||
افزونهٔ وردپرس «شبکه تأمین»
نمایش کاتالوگ عمومی محصولات Hesabix روی سایت وردپرس از طریق پراکسی REST داخلی (بدون مشکل CORS و بدون بارگذاری اسکریپت از CDN).
آیا نصبکننده میتواند برای بازدیدکنندگان «همهٔ تأمینکنندگان» را فعال کند؟
بله. اگر در تنظیمات → شبکه تأمین مقدار شناسهٔ کسبوکار پیشفرض را ۰ بگذارید و در شورتکد یا بلوک هم business_id / فیلد کسبوکار را خالی بگذارید، درخواست لیست بدون پارامتر business_id به API Hesabix ارسال میشود. در آن حالت بازدیدکننده:
- کالاهای همهٔ کسبوکارهایی که در Hesabix کالایشان برای کاتالوگ عمومی علامت خورده است را میبیند؛
- روی هر کارت نام تأمینکننده (
supplier.business_name) را میبیند؛ - با جستجو (متن نام/توضیح/برند/مشخصات) و در صورت تنظیم در شورتکد/بلوک، با دسته، استان، شهر و برند/مدل نتایج را محدود میکند؛
- با دکمهٔ تماس (در صورت فعال بودن تماس در Hesabix و کپچا) پیام میفرستد.
محدودیتها طبق سیاست Hesabix است (فقط کالای is_public_catalog، نرخسنجی سرور، و غیره).
نیازمندیها
- وردپرس 5.8+
- PHP 7.4+
- سرور Hesabix با API عمومی کاتالوگ فعال (مستندات:
docs/PUBLIC_PRODUCT_CATALOG.mdدر مخزن اصلی)
نصب
- پوشهٔ
shabake-taminرا درwp-content/plugins/کپی کنید. - از پنل وردپرس افزونه را فعال کنید.
- به تنظیمات → شبکه تأمین بروید و آدرس پایهٔ API را وارد کنید (مثلاً
https://api.example.comبدون اسلش آخر). - (اختیاری) صفحهٔ عمومی کاتالوگ را از همان صفحه فعال کنید؛ آدرس شبیه
https://example.com/tamin/خواهد بود (اسلاگ را میتوانید عوض کنید). پس از اولین فعالسازی یا تغییر اسلاگ، در صورت ۴۰۴ یکبار تنظیمات → پیوندهای یکتا → ذخیره بزنید.
شورتکد
[shabake_tamin]
پارامترها:
| پارامتر | پیشفرض | توضیح |
|---|---|---|
business_id |
خالی (یا مقدار تنظیمات «شناسهٔ کسبوکار پیشفرض») | اگر خالی و پیشفرض ۰ باشد → همهٔ کسبوکارها |
category_id |
خالی | فیلتر شناسهٔ دسته در Hesabix (اختیاری) |
province |
خالی | فیلتر متن استان (اختیاری) |
city |
خالی | فیلتر متن شهر (اختیاری) |
brand |
خالی | فیلتر متن برند یا مدل (اختیاری) |
columns |
4 |
تعداد ستون گرید (۲ تا ۶) |
search |
1 |
نمایش نوار جستجو (0 برای مخفی) |
take |
20 |
تعداد در هر درخواست (۱ تا ۱۰۰) |
location_filters |
0 |
اگر 1 باشد، فیلدهای استان/شهر برای بازدیدکننده و دکمهٔ «اعمال فیلتر مکان» نمایش داده میشود |
brand_filters |
0 |
اگر 1 باشد، فیلد برند/مدل برای بازدیدکننده و دکمهٔ «اعمال فیلتر» نمایش داده میشود |
province_suggest |
1 |
همراه با location_filters=1: پیشنهاد ۳۱ استان ایران در فیلد استان (datalist، دادهٔ لوکال PHP)؛ با 0 غیرفعال |
show_details |
1 |
دکمهٔ جزئیات روی کارت و مودال با GET .../product/{uuid} (پراکسی REST)؛ با 0 فقط تماس |
page |
0 |
با 1 چیدمان تمامعرض (نوار خلاصهٔ نتایج + استایل صفحه) داخل همان برگه — برای تجربهٔ نزدیکتر به «ویترین» بدون rewrite |
[shabake_tamin business_id="12" columns="3" search="1"]
[shabake_tamin category_id="5" province="تهران" take="30"]
[shabake_tamin location_filters="1" brand_filters="1" search="1"]
[shabake_tamin brand="سامسونگ" take="30"]
ابزارک (سایدبار)
در ظاهر → ابزارکها (یا نمایش → ابزارکها در قالبهای کلاسیک) ابزارک «کاتالوگ شبکه تأمین» را به ناحیهٔ ابزارک اضافه کنید؛ فیلترها همان منطق شورتکد را دارند و میتوانید با فیلتر PHP shabake_tamin_widget_catalog_config آن را تغییر دهید (بخش «Override قالب»).
بلوک گوتنبرگ
در ویرایشگر بلوک، در دستهٔ ابزارکها بلوک «کاتالوگ شبکه تأمین» (shabake-tamin/catalog) را اضافه کنید. اسکریپت ادیتور فقط از بستههای هستهٔ وردپرس (wp-blocks, wp-element, …) استفاده میکند؛ فایل آن در assets/js/block-editor.js است.
جزئیات کالا
با show_details="1" (پیشفرض) روی هر کارت دکمهٔ جزئیات نمایش داده میشود؛ مودال شامل خلاصه، توضیحات، بررسی تخصصی، جدول مشخصات فنی، برند/مدل، کشور سازنده، لینک ویدیو، حداقل سفارش و زمان تحویل است (GET .../product/{uuid} پراکسی REST). اگر کالا برند یا مدل داشته باشد، روی کارت لیست هم نمایش داده میشود.
ترجمه
فایل الگو: languages/shabake-tamin.pot. برای بهروزرسانی کامل رشتهها در محیطی که WP-CLI نصب است:
wp i18n make-pot . languages/shabake-tamin.pot --slug=shabake-tamin --domain=shabake-tamin
(از داخل پوشهٔ افزونه اجرا شود.)
کتابخانههای خارجی
هیچ وابستگی به CDN وجود ندارد. اسکریپت و استایل از مسیر خود افزونه (assets/js و assets/css) با wp_enqueue بارگذاری میشوند.
Override قالب
برای تغییر HTML کاتالوگ، فایل را در قالب خود کپی کنید:
- مسیر در قالب فرزند/والد:
wp-content/themes/<your-theme>/shabake-tamin/catalog-wrapper.php - صفحهٔ عمومی (rewrite):
.../shabake-tamin/catalog-public-page.php - نقطهٔ شروع پیشفرض:
templates/catalog-wrapper.phpوtemplates/catalog-public-page.phpداخل افزونه
فیلترهای PHP:
shabake_tamin_locate_template— مسیر نهایی فایل قالبshabake_tamin_shortcode_config— پیکربندی پس از پارس شورتکدshabake_tamin_catalog_config— پیکربندی نهایی قبل از رندر (شورتکد، بلوک، ابزارک یا فراخوانی دستی)shabake_tamin_public_catalog_config— فقط برای صفحهٔ عمومی rewrite؛ پیش ازshabake_tamin_catalog_configshabake_tamin_widget_catalog_config— فقط برای ابزارک، پیش ازshabake_tamin_catalog_configshabake_tamin_iran_provinces— آرایهٔ نام استانها برایdatalist(قبل از رندر قالب)
REST وردپرس
مسیر پایه: /wp-json/shabake-tamin/v1/
GET catalog— پراکسی لیست (search,business_id,category_id,province,city,skip,take)GET product/{uuid}— جزئیات یک کالاPOST captcha— دریافت کپچا برای فرم تماسPOST contact— ارسال پیام تماس (بدنه مشابهPOST /api/v1/public/catalog/contact-messagesدر Hesabix)
کش Transient روی پاسخهای catalog و product طبق مقدار «مدت کش پراکسی» در تنظیمات اعمال میشود (۰ = بدون کش).
امنیت
- پارامترهای پراکسی در PHP سانیتایز میشوند.
- محدودیت نرخ ساده بر اساس IP روی routeهای پراکسی اعمال شده است.
مجوز
GPL v2 یا بالاتر (همتراز افزونههای نمونهٔ Hesabix در این مخزن).