ساختار پلاگین ووکامرس
پلاگین ووکامرس ( Woocommerce ) یک پلاگین برای پیاده سازی سیستم فروش محصول در بستر وردپرس می باشد. اگر ساختار پیش فرض ووکامرس را دنبال کنید می توانید از قالب های پیش فرض ووکامرس استفاده کنید.
Woocommerce Template Structure
ماهیت استفاده از ووکامرس توسط یک برنامه نویس استفاده از یک موجودیت به نام محصول با تمام ویژگی های اصلی نظیر قیمت و اطلاعات محصول می باشد به علاوه یک روال صریح خرید که شامل مراحل سبد خرید ⇐ تسویه حساب ⇐ اتمام سفارش می باشد.
ماهیت محصول می تواید یکی از موارد پیش فرض یا موارد جدیدی که شما میخواهید باشد. مثلا می توانید محصولی با ماهیت نرم افزار بسازید. یا محصولی با ماهیت رزرو بسازید. برای این کار می توانید از نوع محصول یا Product Type استفاده کنید.
برای پیاده سازی قالب های نمایش وردپرس با توجه به نیاز نوع محصول :
- استفاده از ساختارهای قالب پیش فرض : ساختار پیش فرض قالب های ووکامرس قابل بازنویسی می باشند.کافی است دایرکتوری با نام woocommerce در پوسته خود قرار دهید و در درون آن ساختار ها را پیاده سازی کنید.
- ایجاد ساختارهای قالب شخصی : می توانید قالب های متفاوت برای نوع محصولات جدید خودتان داشته باشید. برای این کار باید قالب های پیش فرض ووکامرس را باز نویسی کنید.
صفحات حساب کاربری ، تسویه حساب ، سبد خرید صفحات اصلی ووکامرس هستند که باید ساخته شوند و در پیکره بندی انتخاب شوند. در بین حساب کاربری چندین قالب را با توجه به لینک ( همان endpoint ) نمایش می دهد:
برای بدست آوردن هر یک از لینک های موجود باید ابتدا لیک برگه تسویه حساب را بدست آورید بعد endpoint انتخاب شده کاربر را از تنظیمات به صورت programmatically بدست بیاورید. البته بسیاری از قالب های بالا یک سری پارامتر دارند که اگر ست نشده باشند به کارت ریدایرکت می شوند.
Installed Taxonomies and Post Types
دو موجودیت مهم در ساختار وردپرس Post Type و Taxonomy می باشد.پلاگین ووکامرس نیز از این ساختار ها در ماهیت های زیر استفاده کرده است :
- محصول (product): ساخت یک پست تایپ با نامک
product
جهت استفاده در محصولات- دسته بندی محصولات (product_cat) : ساخت یک تکسونومی با نام
product_cat
و الصاق آن به پست تایپ product . - برچسب محصولات (product_tag) : تکسونومی با نام
product_tag
و الصاق آن به پست تایپ product .
- دسته بندی محصولات (product_cat) : ساخت یک تکسونومی با نام
- محصول متغیر (product_variation) : هر محصول متغیر از یک پست تایپ است با نامک
product_variation
که به عنوان post_parent شناسه محصول اصلی را دارا می باشد.hidden UI - سفارشات (shop_order) : پست تایپ با نامک
shop_order
برای سفارشات- وضعیت های سفارشات (shop_order_status) : وضعیت های سفارشات یک تکسونومی با نام
shop_order_status
- سفارشات بازگشتی (shop_order_refund) : سفارشات بازگشتی با یک تکسونومی با نامک
shop_order_refund
- وضعیت های سفارشات (shop_order_status) : وضعیت های سفارشات یک تکسونومی با نام
- کوپن های تخفیف (shop_coupon): پست تایپ با نامک
shop_coupon
برای کوپن های تخفیف.
ارتباط میان محصول متغیر و محصول به شکل زیر برقرا می گردد:
موجودیت order_item یه سری اطلاعات متا داره که در wp_order_item_meta
ذخیره شده.
Installed Database Tables
ووکامرس علاوه بر استفاده از ساختار های پیش فرض وردپرس جداول خود را به پایگاه داده اضافه می کند.برخی از مهم ترین جداول ووکامرس عبارتست از :
نام جدول | توضیحات |
woocommerce_sessions |
اطلاعات کالاهایی که در سبد خرید می باشند. |
woocommerce_api_keys |
کلید های REST که برای برخی مشتریان ساخته می شود. (در تب تنظیمات آن را اضافه کنید) |
woocommerce_attribute_taxonomies |
ویژگی های محصولات که به عنوان یک taxonomy ساخته می شود.مثلا رنگ |
woocommerce_order_items |
هر سفارش یک پست هست که یه تعداد آیتم داره که در جدول woocommerce_order_item ذخیره شده. با استفاده از متد $order->get_items() می توان به آیتم ها دسترسی پیدا کرد. |
woocommerce_order_itemmeta |
هر آیتم امکان ذخیره سازی یک اطلاعات متا رو داره.$item->add_meta_data () می توان متا به هر آیتم اضافه کرد. |
woocommerce_shipping_zones |
مناطق حمل و نقل که در تنظیمات حمل و نقل ابتدا می سازید. |
woocommerce_shipping_zone_locations |
نواحی منطقه ای که برای مناطق اضافه می کنید. مثلا مثلا IR که معادل ایران است. |
Classes in WooCommerce
با اضافه شدن موجودیت محصول و سفارش و کوپن و ممتری کلاس هایی نیز معادل آن بوجود می آید. کلاس هایی که معادل Model به ازای هر resource می باشد.برخی از کلاس های پر کاربرد :
WC_Product : کلاسی که جهت دریافت اطلاعات محصول می باشد.
$product = wc_get_product( $post->ID ); if($product->is_on_sale()) { $sale_price = $product->get_sale_price(); $new_sale_price = 1000; $product->set_sale_price($new_sale_price); } $price = $product->get_price(); $new_price = 2000; $product->set_price($new_price); $product->set_regular_price($new_price); $product->save();
WC_Product_Variation : یک کلاس برای اشیا از نوع محصولات متغیر
نکته : اگر شناسه محصول را داشتید می توانید با استفاده از تابع wc_get_product بسته به نوع محصول شئ محصول را دریافت کنید. ( از روی هر یک از کلاس های بالا )
WC_Order : دریافت اطلاعات مربوط به سفارشات.
$order = wc_get_order($post->ID); $items = $order->get_items();
WC_Order_Item : دریافت هر آیتم از هر سفارش با استفاده از شناسه order_item .
$item = WC_Order_item($item->id); $item->add_meta_data(self::product_gift, $values[self::product_gift]);
WC_Customer : اطلاعات مشتری جاری فروشگاه با استفاده از متغیر جهانی $woocommerce
یا شناسه کاربر یا user_id.
global $woocommerce; $customer_country = $woocommerce->customer->get_country();
WC_Cart : اطلاعات موجود در سبد خرید با استفاده از جدول wc_session و متغیر $woocommerce
.
global $woocommerce; $cart_subtotal = $woocommerce->cart->get_cart_subtotal();
مثلا در کد بالا جمع کل سبد خرید را محاسبه می کند.
مرسی از مطالب مفید