جستجو
برای جستجو متن مورد نظر وارد کنید و Enter بزنید برای بستن Esc بزنید.
HPOS یا High-Performance Order Storage یکی از مهمترین تغییرات معماری ووکامرس برای مدیریت سفارشهاست. این قابلیت با انتقال اطلاعات سفارش از ساختار سنتی وردپرس به جداول اختصاصی ووکامرس، نحوه ذخیره و بازیابی دادههای سفارش را تغییر میدهد.
در ساختار قدیمی، سفارشهای ووکامرس مانند یک نوع نوشته سفارشی در جداول wp_posts و wp_postmeta ذخیره میشدند. HPOS برای این دادهها جداول اختصاصی ایجاد میکند تا اطلاعات سفارش، آدرسها و دادههای عملیاتی با ساختاری متناسب با نیازهای فروشگاه اینترنتی مدیریت شوند. ووکامرس HPOS را از نسخه 8.2 که در اکتبر 2023 منتشر شد، بهصورت پایدار ارائه کرده و در نصبهای جدید بهصورت پیشفرض فعال است.
در این آموزش، ابتدا توضیح میدهیم HPOS چیست، چه تفاوتی با روش قدیمی ذخیره سفارش دارد و سپس نحوه فعالسازی آن در فروشگاههای قدیمی، بررسی سازگاری افزونهها، همگامسازی سفارشها و استفاده از WP-CLI را بررسی میکنیم.
HPOS مخفف High-Performance Order Storage است و برای ذخیره اطلاعات سفارشهای ووکامرس در جداول اختصاصی طراحی شده است.
ووکامرس در معماری قدیمی، اطلاعات سفارش را در جداول عمومی وردپرس نگهداری میکرد. این روش برای سالها پاسخگوی نیاز فروشگاهها بود، اما با افزایش تعداد سفارشها، حجم داده و تعداد Queryهای مرتبط با سفارش، محدودیتهای این ساختار بیشتر نمایان میشد.
HPOS با استفاده از جداول اختصاصی و ایندکسهای متناسب با دادههای سفارش، این اطلاعات را از ساختار عمومی نوشتههای وردپرس جدا میکند. ووکامرس اعلام کرده است که این معماری برای کاهش عملیات خواندن و نوشتن و بهبود مقیاسپذیری طراحی شده است.
در روش سنتی، دادههای سفارش عمدتاً در جداول زیر قرار میگرفتند:
wp_posts
wp_postmeta
در معماری HPOS، ووکامرس از جداول اختصاصی برای اطلاعات سفارش استفاده میکند. چهار جدول اصلی که در مستندات ووکامرس معرفی شدهاند عبارتاند از:
wp_wc_orders
wp_wc_order_addresses
wp_wc_order_operational_data
wp_wc_orders_meta
البته نام دقیق جدولها به پیشوند دیتابیس سایت وابسته است. بنابراین اگر پیشوند وردپرس شما wp_ نباشد، نام جداول نیز با همان پیشوند ساخته میشود.
این تفکیک باعث میشود اطلاعات سفارش از جدول عمومی نوشتههای وردپرس جدا شود و ووکامرس بتواند Queryهای مرتبط با سفارش را روی ساختاری طراحیشده برای همین منظور اجرا کند.
هرچه تعداد سفارشهای فروشگاه افزایش پیدا کند، حجم عملیات دیتابیس نیز بیشتر میشود. HPOS دادههای سفارش و آدرسها را در جداول اختصاصی همراه با ایندکسهای مربوط به همین دادهها نگهداری میکند.
هدف این معماری کاهش عملیات غیرضروری خواندن و نوشتن و کاهش فشار روی جداول عمومی است. این موضوع بهخصوص برای فروشگاههایی که تعداد زیادی سفارش دارند اهمیت پیدا میکند.
در روش قدیمی، اطلاعات سفارش بین جداول نوشتهها و متادیتای وردپرس پراکنده بود. HPOS دادههای مربوط به سفارش را در ساختار اختصاصی ووکامرس قرار میدهد.
این ساختار برای توسعهدهندگانی که روی سیستم سفارش، افزونههای اختصاصی یا یکپارچهسازیهای فروشگاه کار میکنند نیز مناسبتر است.
یکی از نکات مهم HPOS این است که توسعهدهندگان نباید برای کار با سفارشها بهصورت مستقیم به جداول دیتابیس وابسته باشند.
ووکامرس APIهای CRUD و ابزارهایی مانند wc_get_order() و wc_get_orders() را برای کار با سفارشها ارائه میکند. استفاده از این لایه باعث میشود کد افزونه بتواند با ساختارهای مختلف ذخیره سفارش سازگارتر باشد.
HPOS را نباید با افزونههای کش یا ابزارهای بهینهسازی سرعت اشتباه گرفت.
فعال کردن HPOS به این معنا نیست که تمام صفحات فروشگاه ناگهان سریعتر میشوند. هدف اصلی این قابلیت، بهینهسازی معماری ذخیره و بازیابی دادههای سفارش و افزایش مقیاسپذیری سیستم سفارشهاست.
تستهای منتشرشده توسط تیم ووکامرس در مراحل توسعه HPOS نشان داده بودند که در برخی سناریوهای آزمایشی، ایجاد سفارش میتواند تا پنج برابر سریعتر شود و فرآیند Checkout نیز در برخی تستها تا 1.5 برابر بهبود پیدا کند. این اعداد مربوط به شرایط آزمایش ووکامرس هستند و نباید بهعنوان تضمین افزایش سرعت برای تمام فروشگاهها در نظر گرفته شوند.
بنابراین اگر هدف شما افزایش سرعت یک فروشگاه ووکامرسی است، HPOS یکی از بخشهای معماری دیتابیس محسوب میشود و در کنار آن باید کش، Queryهای دیتابیس، افزونهها، تصاویر، کدهای قالب، هاست و سایر عوامل مؤثر بر عملکرد بررسی شوند.
اگر فروشگاه شما بهتازگی نصب شده و از WooCommerce 8.2 یا نسخههای جدیدتر استفاده میکند، HPOS برای نصبهای جدید بهصورت پیشفرض فعال است.
اما در فروشگاههای قدیمی، قبل از تغییر ساختار ذخیره سفارش باید اطلاعات موجود بین ساختار قدیمی و جداول HPOS همگام شود.
قبل از فعال کردن HPOS، افزونههایی را که با سفارشهای ووکامرس ارتباط دارند بررسی کنید.
موارد زیر اهمیت بیشتری دارند:
افزونه درگاه پرداخت
افزونه صدور فاکتور
افزونه حملونقل
افزونه اشتراک
افزونه رزرو
افزونههای مدیریت سفارش
افزونههای اتصال به حسابداری و CRM
کدهای اختصاصی سایت
اگر افزونهای با HPOS سازگار نباشد، ووکامرس میتواند گزینه فعالسازی HPOS را غیرفعال کند. در چنین شرایطی باید ابتدا افزونه موردنظر را به نسخه سازگار ارتقا دهید یا موضوع را با توسعهدهنده آن بررسی کنید.
در فروشگاههای قدیمی به مسیر زیر بروید:
ووکامرس > پیکربندی > پیشرفته > امکانات
در نسخه انگلیسی:
WooCommerce > Settings > Advanced > Features
در این قسمت گزینه مربوط به Compatibility Mode را فعال کنید.
این گزینه در مستندات فعلی ووکامرس با عنوانی مشابه زیر نمایش داده میشود:
Enable compatibility mode (synchronizes orders to the posts table)
فعال کردن این گزینه باعث میشود عملیات همگامسازی سفارشها انجام شود. ووکامرس برای این کار Actionهای پسزمینه ایجاد میکند.
پس از فعال کردن Compatibility Mode، ووکامرس سفارشهای موجود را بهصورت Batch پردازش میکند.
در روش استاندارد، هر Batch شامل 25 سفارش است. پس از پایان هر Batch، در صورت وجود سفارشهای باقیمانده، عملیات بعدی زمانبندی میشود.
اگر میخواهید وضعیت این فرآیند را بررسی کنید، به مسیر زیر بروید:
ووکامرس > وضعیت > Scheduled Actions
در این بخش میتوانید Actionهای مرتبط با همگامسازی را مشاهده کنید.
در سایتهایی با تعداد سفارش زیاد، انجام این فرآیند ممکن است زمانبر باشد. بنابراین نباید تصور کرد که فعال کردن Compatibility Mode به معنی پایان فوری مهاجرت است.
پس از آنکه دو ساختار با یکدیگر همگام شدند، امکان انتخاب HPOS فعال میشود.
در بخش:
WooCommerce > Settings > Advanced > Features
گزینه استفاده از جداول سفارش ووکامرس را انتخاب کنید.
در نسخههای جدید رابط کاربری، این گزینه با عبارتی مانند:
Use the WooCommerce orders tables
نمایش داده میشود.
در این حالت، جداول HPOS بهعنوان منبع اصلی یا Authoritative Data Store برای سفارشها استفاده میشوند.
این اصطلاح یکی از بخشهای مهم معماری HPOS است.
در زمان فعال بودن HPOS، دو ساختار ذخیره سفارش میتوانند وجود داشته باشند. یکی بهعنوان منبع اصلی داده و دیگری بهعنوان نسخه پشتیبان یا Secondary Data Store عمل میکند.
زمانی که HPOS منبع اصلی باشد، جداول اختصاصی ووکامرس دادههای اصلی سفارش را نگهداری میکنند و ساختار قدیمی وردپرس نقش نسخه پشتیبان را دارد.
این تفاوت اهمیت زیادی دارد، زیرا در دوره مهاجرت ممکن است هر دو ساختار دادههای سفارش را داشته باشند، اما یکی از آنها منبع اصلی محسوب میشود.
یکی از اصلاحات مهم نسبت به نسخه قبلی این مقاله همین بخش است.
نباید بلافاصله پس از فعال کردن HPOS، Compatibility Mode را خاموش کنید.
مستندات ووکامرس توصیه میکنند پس از فعال شدن HPOS، برای مدتی همگامسازی را حفظ کنید تا عملکرد فروشگاه و افزونهها بررسی شود. در راهنمای فروشگاههای بزرگ نیز پیشنهاد شده است که پس از فعال شدن HPOS، ابتدا عملکرد فروشگاه بررسی شود و سپس همگامسازی بهصورت کامل غیرفعال شود.
برای فروشگاههای پرتراکنش، ووکامرس نمونهای از مهاجرت را ارائه کرده که در آن پس از یک هفته فعالیت پایدار، Synchronization بهطور کامل غیرفعال شده است. این مدت یک الزام عمومی برای همه فروشگاهها نیست، بلکه بخشی از فرآیند پیشنهادی یک سناریوی فروشگاه بزرگ است.
یک نکته مهم برای فروشگاههایی که در سال 2026 از ووکامرس استفاده میکنند، تغییر وضعیت Sync on Read است.
تیم توسعه ووکامرس اعلام کرده است که از WooCommerce 10.7، Sync on Read بهصورت پیشفرض غیرفعال شده است. این تغییر برای فروشگاههایی اهمیت دارد که هنوز از افزونهها یا کدهایی استفاده میکنند که مستقیماً اطلاعات سفارش را در جداول قدیمی وردپرس تغییر میدهند.
Sync on Read یک مکانیزم سازگاری بود که اگر اطلاعات سفارش مستقیماً در ساختار قدیمی نوشتههای وردپرس تغییر میکرد، میتوانست هنگام خواندن سفارش این تغییرات را به HPOS منتقل کند.
مشکل این روش این بود که دادهای که خارج از جریان استاندارد WooCommerce API تغییر کرده بود، میتوانست داده موجود در HPOS را تحت تأثیر قرار دهد. ووکامرس به همین دلیل این رفتار را برای نسخه 10.7 بهصورت پیشفرض غیرفعال کرده است.
اگر افزونه یا کد اختصاصی شما از روشهایی مانند موارد زیر برای تغییر سفارش استفاده میکند:
wp_update_post()
update_post_meta()
Direct SQL
باید آن را بررسی کنید.
توصیه ووکامرس این است که توسعهدهندگان برای کار با سفارشها از لایه CRUD ووکامرس استفاده کنند و وابستگی مستقیم به جداول قدیمی وردپرس را کنار بگذارند.
اگر به SSH و WP-CLI دسترسی دارید، میتوانید وضعیت HPOS را دقیقتر بررسی کنید.
دستور زیر وضعیت HPOS را نمایش میدهد:
wp wc hpos status
این دستور میتواند اطلاعاتی مانند فعال بودن HPOS، فعال بودن Compatibility Mode، تعداد سفارشهای همگامنشده و سفارشهای مشمول پاکسازی را نمایش دهد.
برای بررسی تعداد سفارشهایی که هنوز Synchronize نشدهاند:
wp wc hpos count_unmigrated
این دستور تعداد سفارشهای در انتظار همگامسازی را نمایش میدهد.
دستور زیر برای همگامسازی سفارشها استفاده میشود:
wp wc hpos sync
این دستور سفارشها را بر اساس Data Store فعلی که در تنظیمات ووکامرس بهعنوان منبع اصلی انتخاب شده، با Data Store دیگر همگام میکند.
این روش میتواند در فروشگاههایی که تعداد سفارش زیادی دارند یا میخواهند فرآیند مهاجرت را با کنترل بیشتری انجام دهند، کاربردی باشد.
برای بررسی اینکه دادههای سفارش در ساختار قدیمی و HPOS با یکدیگر مطابقت دارند، میتوانید از دستور زیر استفاده کنید:
wp wc hpos verify_data
این دستور برای شرایطی کاربرد دارد که Compatibility Mode فعال است و میخواهید مطمئن شوید دادههای دو Data Store با یکدیگر هماهنگ هستند.
اگر اختلافی وجود داشته باشد، ابزار میتواند اطلاعات مربوط به تفاوتهای مشاهدهشده را نمایش دهد.
برای بررسی یک سفارش مشخص نیز میتوانید از دستور زیر استفاده کنید:
wp wc hpos diff 100087
عدد انتهای دستور را با شناسه سفارش موردنظر جایگزین کنید.
این دستور اختلاف بین نسخه HPOS و نسخه قدیمی همان سفارش را بررسی میکند، اما خودش اختلاف را اصلاح نمیکند. برای اصلاح یا مهاجرت انتخابی داده میتوان از backfill استفاده کرد.
backfill برای زمانی مفید است که بخواهید اطلاعات یک سفارش یا بخش مشخصی از اطلاعات آن را بین دو Data Store جابهجا کنید.
ساختار کلی دستور به شکل زیر است:
wp wc hpos backfill <order_id> --from=<datastore> --to=<datastore>
مزیت Backfill این است که برخلاف sync میتوانید Data Store مبدأ و مقصد را مشخص کنید و روی یک سفارش خاص یا بخش مشخصی از دادهها عملیات انجام دهید.
این قابلیت بیشتر برای عیبیابی و اصلاح موارد خاص کاربرد دارد و برای کاربران عادی ووکامرس ضرورتی ندارد.
خیر، بلافاصله پس از فعالسازی HPOS چنین کاری نکنید.
وقتی HPOS فعال است و Compatibility Mode خاموش شده، ووکامرس ابزارهایی برای پاک کردن دادههای قدیمی از جداول Legacy در اختیار قرار میدهد.
دلیل احتیاط این است که پاکسازی یک عملیات مخرب یا Destructive Operation محسوب میشود. ابزار HPOS Cleanup نیز بهصورت پیشفرض تمام سفارشها را پاک نمیکند و برای اجرای آن باید محدوده یا سفارش مشخص شود.
به همین دلیل، پاکسازی باید بعد از اطمینان از عملکرد صحیح HPOS و پایان دوره انتقال انجام شود.
HPOS برای ساختار جدید ووکامرس طراحی شده و نصبهای جدید از نسخه 8.2 به بعد بهصورت پیشفرض از آن استفاده میکنند.
با این حال، اهمیت آن در فروشگاههای بزرگتر بیشتر میشود. فروشگاههایی که هزاران یا میلیونها سفارش دارند، سیستمهای اشتراک، تعداد زیادی یکپارچهسازی یا عملیات پیچیده روی سفارشها دارند، بیشتر با چالشهای مقیاسپذیری دیتابیس مواجه میشوند.
برای چنین سایتهایی، مهاجرت باید با برنامهریزی و ترجیحاً ابتدا روی محیط Staging انجام شود. راهنمای رسمی ووکامرس برای فروشگاههای بزرگ نیز روی شباهت محیط آزمایشی به سایت اصلی، تست پرداخت، بررسی سفارشها و مانیتور کردن عملکرد پس از مهاجرت تأکید دارد.
برای کاهش ریسک مهاجرت، این موارد را بررسی کنید:
این مرحله برای فروشگاههای بزرگ اهمیت بیشتری دارد و مستندات رسمی ووکامرس نیز اجرای تستهای کامل قبل و بعد از مهاجرت را توصیه میکند.
اگر سایت شما افزونه یا کد اختصاصی دارد، فقط بررسی اینکه افزونه در صفحه تنظیمات ووکامرس با HPOS سازگار است کافی نیست.
کدهایی را که مستقیماً با سفارشها کار میکنند نیز بررسی کنید.
برای مثال، اگر یک افزونه سفارشی اطلاعات سفارش را مستقیماً از wp_postmeta میخواند یا با توابع عمومی وردپرس اطلاعات سفارش را تغییر میدهد، باید بررسی شود که این منطق با HPOS سازگار است یا خیر.
ووکامرس برای توسعهدهندگان توصیه میکند به جای وابستگی مستقیم به جداول دیتابیس، از CRUD API ووکامرس استفاده شود. این روش باعث میشود کد بتواند با Data Storeهای مختلف کار کند.
اگر فروشگاه شما از افزونههای سازگار با HPOS استفاده میکند و کد اختصاصی آن وابستگی مستقیمی به ساختار قدیمی سفارشها ندارد، استفاده از HPOS انتخاب مناسبی است.
برای فروشگاههای جدید، HPOS از مسیر اصلی ووکامرس محسوب میشود و از نسخه 8.2 به بعد بهصورت پیشفرض روی نصبهای جدید فعال است.
برای فروشگاههای قدیمی نیز مهاجرت امکانپذیر است، اما بهتر است این فرآیند با بررسی سازگاری افزونهها، همگامسازی کامل اطلاعات، تست سفارش و در صورت امکان ابتدا روی محیط Staging انجام شود.
HPOS قرار نیست جایگزین افزونههای کش یا بهینهسازی دیتابیس شود. هدف آن ایجاد یک Data Store اختصاصی و مناسبتر برای سفارشهای ووکامرس است. اگر فروشگاه شما حجم سفارش بالایی دارد، این تغییر معماری میتواند نقش مهمی در مقیاسپذیری و مدیریت بهتر دادههای سفارش داشته باشد.
HPOS مخفف High-Performance Order Storage است و اطلاعات سفارشهای ووکامرس را در جداول اختصاصی ذخیره میکند. این ساختار برای Queryهای مرتبط با سفارش و نیازهای فروشگاه اینترنتی طراحی شده است.
HPOS از WooCommerce 8.2 که در اکتبر 2023 منتشر شد، بهصورت پایدار در هسته ووکامرس قرار گرفته و برای نصبهای جدید بهصورت پیشفرض فعال است.
HPOS ابزار عمومی افزایش سرعت نیست. هدف اصلی آن بهبود معماری ذخیره و بازیابی سفارشها و افزایش مقیاسپذیری دیتابیس است. تستهای توسعه ووکامرس در برخی سناریوها بهبود قابل توجهی در ایجاد سفارش و Checkout نشان دادهاند، اما این نتایج تضمینشده برای همه فروشگاهها نیستند.
بله. ابتدا باید Compatibility Mode فعال شود تا دادههای سفارش بین دو ساختار همگام شوند. پس از تکمیل Synchronization میتوان HPOS را بهعنوان Data Store اصلی انتخاب کرد.
خیر. افزونههایی که مستقیماً به ساختار قدیمی سفارشها وابسته هستند ممکن است با HPOS مشکل داشته باشند. پیش از مهاجرت باید افزونههای مرتبط با سفارش و کدهای اختصاصی سایت بررسی شوند.
بله. در صورت وجود مشکل میتوان Data Store سفارش را دوباره به ساختار قدیمی وردپرس برگرداند، اما در فروشگاههای فعال باید قبل از این کار وضعیت همگامسازی و دادههای موجود بررسی شود. راهنمای رسمی ووکامرس نیز حفظ Synchronization در دوره انتقال را توصیه میکند.
پس از اطمینان از عملکرد صحیح سایت و سازگاری افزونهها میتوان آن را خاموش کرد. برای فروشگاههای بزرگ، ووکامرس توصیه میکند ابتدا مدتی عملکرد سایت و فرآیند سفارش بررسی شود و سپس Synchronization بهطور کامل غیرفعال شود.
خیر. HPOS یک قابلیت معماری دیتابیس است و مستقیماً فاکتور رتبهبندی گوگل محسوب نمیشود. اثر احتمالی آن بیشتر در عملکرد فنی و مقیاسپذیری بخش سفارشهای فروشگاه دیده میشود.
خیر. حذف دادههای Legacy باید پس از اطمینان از عملکرد صحیح HPOS و خاموش شدن Compatibility Mode انجام شود. ووکامرس برای این کار ابزار Cleanup ارائه کرده است.
HPOS یکی از تغییرات بنیادی ووکامرس در معماری مدیریت سفارشهاست. این قابلیت سفارشها را از ساختار عمومی wp_posts و wp_postmeta خارج کرده و به جداول اختصاصی ووکامرس منتقل میکند.
مهمترین نکته هنگام مهاجرت این است که فعال کردن HPOS را یک تغییر ساده در تنظیمات در نظر نگیرید. سازگاری افزونهها، کدهای اختصاصی، همگامسازی سفارشها و فرآیند بازگشت به ساختار قبلی باید پیش از تغییر بررسی شوند.
برای فروشگاههای جدید، استفاده از HPOS مسیر پیشفرض ووکامرس است. برای فروشگاههای قدیمی نیز اگر افزونهها و کدهای اختصاصی سازگار باشند، مهاجرت به این معماری میتواند انتخاب مناسبی برای مدیریت بهتر دادههای سفارش و آمادهسازی فروشگاه برای حجم بالاتر تراکنشها باشد.