منابع داده وردپرس و ووکامرس
هر فهرستی که از سایت وردپرسی میآید با ویجت لیست پویا ساخته میشود. کافی است نوع منبع را روی WordPress بگذارید و مشخص کنید چه نوع اطلاعاتی میخواهید.
تنظیم منبع WordPress در لیست پویا
- یک لیست پویا به صفحه اضافه کنید.
- در بخش منبع داده، نوع منبع را روی WordPress بگذارید.
- سه تنظیم پر میشود:
| تنظیم | توضیح |
|---|---|
| سایت WordPress | اگر خالی بماند، سایت انتخابشده در تنظیمات اپ استفاده میشود |
| نوع داده | یکی از سرویسهای جدولهای پایین |
| فیلترها و Query | یک آبجکت JSON که مستقیم به سرویس فرستاده میشود |
- یک صفحه الگو برای آیتمها انتخاب کنید. این صفحه بهازای هر رکورد یک بار ساخته میشود.
صفحهبندی، حالت بارگذاری، حالت خالی و حالت خطا را همین لیست مدیریت میکند و لازم نیست خودتان page و per_page را بنویسید.
هر آیتم لیست، داده خود را به صفحه الگو میدهد. داخل آن صفحه از متغیرهای sys.inPage.entity.*، sys.inPage.product.* و sys.inPage.post.* استفاده کنید. توضیح کامل در متغیرهای وردپرس آمده است.
استفاده از متغیر در فیلترها
در آبجکت «فیلترها و Query» میتوانید از الگوی {{نام متغیر}} استفاده کنید. مقدار متغیر هنگام درخواست جایگزین میشود:
{
"category": "{{shop.filter.category}}",
"search": "{{search.query}}"
}
اگر کل مقدار یک فیلد فقط {{...}} باشد، مقدار متغیر با نوع اصلی خود (عدد، بولین، آرایه) جایگزین میشود؛ در غیر این صورت به متن تبدیل میشود.
لیست وردپرسی با تغییر مقدار متغیر، بهطور خودکار دوباره خوانده نمیشود. برای فیلتر و جستوجو، ابتدا متغیر را مقداردهی کنید و سپس صفحهای را باز کنید که لیست در آن قرار دارد، یا از عملکرد بروزرسانی صفحه استفاده کنید.
سرویسهای وردپرس
این سرویسها از REST API خود وردپرس میآیند و به افزونه اختصاصی نیاز ندارند.
| نوع داده در پنل | شناسه سرویس | نوع موجودیت | نکته |
|---|---|---|---|
| نوشتههای WordPress | wp.posts | post | تصویر شاخص خودکار همراه داده میآید |
| برگههای WordPress | wp.pages | page | — |
| دستههای نوشته | wp.categories | category | — |
| برچسبهای نوشته | wp.tags | tag | — |
| دیدگاههای نوشته | wp.comments | comment | با فیلتر post محدود به یک نوشته میشود |
| رسانهها | wp.media | media | — |
فیلترهای پرکاربرد این سرویسها همان پارامترهای استاندارد وردپرس هستند:
// نوشتههای یک دسته، مرتب بر اساس تاریخ
{ "categories": 12, "orderby": "date", "order": "desc" }
// جستوجو در نوشتهها
{ "search": "سفر" }
// فقط نوشتههای چسبنده
{ "sticky": true }
// دیدگاههای یک نوشته مشخص
{ "post": 145, "orderby": "date", "order": "asc" }
سرویسهای ووکامرس
این سرویسها از رابط عمومی فروشگاه ووکامرس میآیند و به افزونه اختصاصی نیاز ندارند.
| نوع داده در پنل | شناسه سرویس | نوع موجودیت | نکته |
|---|---|---|---|
| محصولات WooCommerce | woo.products | product | — |
| دستههای محصول | woo.categories | category | — |
| برچسبهای محصول | woo.tags | tag | — |
| برندهای محصول | woo.brands | brand | نیازمند پشتیبانی برند در فروشگاه |
| ویژگیهای محصول | woo.attributes | attribute | مثل «رنگ» و «سایز» |
| مقادیر ویژگی محصول | woo.attribute_terms | attribute_term | نیازمند فیلتر attribute |
| دیدگاههای محصول | woo.reviews | comment | — |
| اقلام سبد خرید | woo.cart | cart_item | بدون صفحهبندی |
| روشهای ارسال سبد خرید | woo.shipping_rates | shipping_rate | بدون صفحهبندی؛ بعد از ثبت آدرس پر میشود |
نمونه فیلترها:
// محصولات یک دسته
{ "category": 25 }
// فقط محصولات موجود و برجسته
{ "featured": true, "stock_status": "instock" }
// محصولات یک ویژگی مشخص
{ "attribute": "pa_color", "attribute_term": "red" }
// مقادیر یک ویژگی (برای ساخت فیلتر رنگ)
{ "attribute": 3 }
در woo.products دو کلید attribute و attribute_term میانبُر هستند و بهصورت خودکار به قالب استاندارد ویژگیهای ووکامرس تبدیل میشوند. در woo.attribute_terms کلید attribute شناسه ویژگی والد است و اجباری است.
سرویسهای افزونه اپ ادیتور
این سرویسها فقط با افزونه اختصاصی کار میکنند. ستون «ورود لازم است» یعنی کاربر باید در اپ به حساب وردپرس وارد شده باشد.
عمومی
| نوع داده در پنل | شناسه سرویس | نوع موجودیت | ورود لازم است |
|---|---|---|---|
| فهرستهای سایت | app.menus | menu | خیر |
| درگاههای پرداخت | app.payment_methods | payment_method | خیر |
| کشورهای مجاز ووکامرس | app.countries | country | خیر |
| استانهای کشور | app.states | state | خیر |
| شهرهای استان | app.cities | city | خیر |
app.states با فیلتر country و app.cities با فیلتر country و state محدود میشوند:
{ "country": "IR", "state": "THR" }
مربوط به کاربر واردشده
| نوع داده در پنل | شناسه سرویس | نوع موجودیت | ورود لازم است |
|---|---|---|---|
| سفارشهای کاربر | app.orders | order | بله |
| فایلهای خریداریشده | app.downloads | download | بله |
| محصولات مورد علاقه | app.favorites | product | بله |
| دیدگاههای کاربر | app.my_comments | comment | بله |
| اشتراکهای کاربر | app.subscriptions | subscription | بله |
| رزروهای کاربر | app.bookings | booking | بله |
مدیریت محتوا و فروشگاه
این سرویسها علاوه بر ورود، به سطح دسترسی مناسب در وردپرس نیاز دارند.
| نوع داده در پنل | شناسه سرویس | نوع موجودیت | دسترسی لازم |
|---|---|---|---|
| نوشتههای قابل مدیریت | app.content_posts | post | ویرایش نوشته |
| برگههای قابل مدیریت | app.content_pages | page | ویرایش برگه |
| رسانههای قابل مدیریت | app.media | media | بارگذاری فایل |
| محصولات پنل فروشگاه | app.manager_products | product | مدیریت ووکامرس |
| سفارشهای پنل فروشگاه | app.manager_orders | order | مدیریت ووکامرس |
| خلاصه مدیریت فروشگاه | app.manager_summary | summary | مدیریت ووکامرس |
app.manager_summary همیشه یک رکورد برمیگرداند؛ آن را در یک لیست با یک آیتم یا مستقیم در یک صفحه الگو نمایش دهید.
فهرستهای تودرتو
بعضی دادهها فقط داخل یک آیتم والد معنا دارند؛ مانند اقلام یک سفارش یا آیتمهای یک فهرست سایت. برای این حالت، بهجای سرویس جداگانه از منبع خودکار لیست پویا استفاده کنید:
- داخل صفحه الگوی والد یک لیست پویای دیگر بگذارید.
- نوع منبع را خودکار انتخاب کنید.
- «مسیر فیلد» را روی نام آرایه بگذارید، مثلاً
itemsبرای اقلام سفارش یاdownloadsبرای فایلهای قابل دریافت.
سرویس woo.attribute_terms استثناست و مستقیم قابل انتخاب است، اما شناسه ویژگی والد را در فیلترها لازم دارد:
{ "attribute": "{{sys.inPage.attribute.id}}" }
صفحهبندی
- بیشتر سرویسها صفحهبندی سمت سرور دارند و لیست پویا خودش
pageوper_pageرا اضافه میکند. اگر «بارگذاری تدریجی» را روشن کنید، صفحه بعد با اسکرول گرفته میشود. - این سرویسها صفحهبندی ندارند و همیشه کل فهرست را برمیگردانند:
woo.cart،woo.shipping_rates،app.payment_methods،app.countries،app.states،app.citiesوapp.manager_summary. - حداکثر تعداد در هر صفحه ۱۰۰ رکورد است.
پردازش داده روی نتیجه
بخش پردازش داده لیست پویا روی همان صفحهای که از سرور آمده اعمال میشود، نه روی کل رکوردها. برای مرتبسازی یا فیلتر واقعی، همان کار را در «فیلترها و Query» به سرور بسپارید:
// درست: مرتبسازی سمت سرور
{ "orderby": "price", "order": "asc" }