کوئری تمام محصولات با قیمت در ووکامرس
سیستم مدیریت محتوای وردپرس و فروشگاه ساز ووکامرس خیلی از امکانات را در اختیار شما میگذارد ولی برخی از امکانات را اگر کاربر حرفهایتری هستید میتوانید به طور مستقیم از اطلاعات سایت خود و بانک اطلاعاتی خود کشف کنید. در این نوشته یک کوئری mysql را برای شما ارائه کردهایم که قیمت محصولات، وزن محصولات، کد محصولات را در وردپرس برای شما میخواند.
کوئری تمام محصولات با قیمت در ووکامرس
اطلاعات مربوط به محصولات در جدول wp_posts و اطلاعات مربوط به وزن و قیمت و… محصولات در جدول wp_postmeta ذخیره میشود پس باید خروجی مورد نظر خود را همزمان از این دو جدول بخوانید. کوئری زیر به شما این لیست را میدهد:
SELECT p.ID,
p.post_title 'Name',
p.post_content 'Description',
IF (meta.meta_key = '_sku', meta.meta_value, null) 'SKU',
IF (meta.meta_key = '_price', meta.meta_value, null) 'Price',
IF (meta.meta_key = '_weight', meta_value, null) 'Weight'
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS meta ON p.ID = meta.post_ID
WHERE (p.post_type = 'product' OR p.post_type = 'product_variation')
AND meta.meta_key IN ('_sku', '_price', '_weight')
GROUP BY p.ID
خب حالا که این کوئری را اجرا کردید به سادگی از آن Export بگیرید و آن را در قالب یک فایل csv برای کارهای خود (یا فایلهایی با پسوندهای دیگر) ذخیره کنید.
نکته: دقت کنید که اگر پسوند پیشفرض جداول وردپرس شما wp نیست حتما در کوئری بالا آن را اصلاح کنید.
اگر به کوئریهای دیگری احتیاج دارید در بخش نظرات برای ما بنویسید.



















این کوئری فقط محصولات ساده رو برمیگردونه یا محصولات متغیر رو هم پوشش میده؟
این کوئری هم محصولات ساده و هم محصولات متغیر را پوشش میدهد.
آیا میشه همین کوئری رو طوری تغییر داد که نام دسته بندی هر محصول هم در خروجی بیاد؟
بله امکانش هست. برای اضافه کردن نام دستهبندی، نیاز به اتصال به جدول `wp_term_relationships` و `wp_terms` و فیلتر کردن بر اساس `term_taxonomy` داریم.
این کوئری روی نسخههای جدید ووکامرس هم سازگاره یا ساختار جداول تغییر کرده؟
بله این کوئری بر روی نسخههای جدید ووکامرس نیز سازگار است و ساختار جداول تغییری نکرده است.
اگر بخوایم فقط محصولاتی که موجودی انبار دارن رو نمایش بدیم، باید چه شرطی به کوئری اضافه کنیم؟
برای نمایش محصولاتی که موجودی انبار دارند، میتوانید شرط AND meta.meta_key = ‘_stock_status’ AND meta.meta_value = ‘instock’ را به کوئری اضافه کنید.
این کوئری روی دیتابیسهای بزرگ با چند هزار محصول هم سریع اجرا میشه یا بهتره بهینهسازی بشه؟
این کوئری برای دیتابیسهای بزرگ بهینه شده است، اما در صورت نیاز به سرعت بیشتر، میتوان با استفاده از ایندکسگذاری مناسب در دیتابیس، عملکرد آن را بهبود بخشید.