سلام شاید براتون پیش اومده باشه که لازم داشتید برای ی سری از کارها مثلا گرفتن خروجی اکسل از لیست محصولات از api ووکامرس استفاده کنید و خب احتمالا توی مرحله اول رفتید سمت کتابخونه requests. درسته که کتابخونه خیلی خوبیه ولی خب از طرف دیگه باید خودتون حواستون به خیلی چیزا باشه. یا اینکه کلی کد بزنید و ی wrapper بنویسید که حواسپرتی توی نوشتن کدتون کمتر بشه.
خبر خوب اینه که قبلا این wrapper نوشته شده و شما فقط باید اون رو با pip نصب کنید. میتونید مستندات خودش رو از اینجا ببینید. نکتهای که هست اینه که این کتابخونه خودش داره از از requests استفاده میکنه و پاسخی که به شما میده عینا همون پاسخی هست که کتابخونه requests بهتون میده.
نصب
خب برای نصبش کافیه توی ترمینال/کامندلاین/پاورشلتون این دستور رو اجرا کنید:
pip install woocommerce
ایجاد دسترسی api
بعدش باید برید و توی تنظیمات ووکامرس consumer_key و consumer_secret جدید ایجاد کنید. برای درست کردنشون توی پنل وردپرس مسیر زیر رو دنبال کنید:
ووکامرس > پیکربندی > منوی پیشرفته > REST API
اینجا که اومدید روی افزودن کلید کلیک کنید:
بعد باید برای این کلید توضیحات اضافه کنید، کاربرش رو انتخاب کنید و مجوزهاش رو هم مشخص کنید:
نهایتا بهتون کلید مصرف کننده یا consumer_key و رمز مصرف کننده یا consumer_secret رو میده:
ی جا یادداشتش کنید و به هیچ وجه به هیچکس ندینش. دلیل اینکه من که نپوشوندمشون اینه که دارم روی لوکال هاستم تست میکنم و مشکلی پیش نمیاد.
نحوه استفاده از کتابخانه
خب حالابا کد زیر ی آبجکت از کلاس API توی ماژول woocommerce میسازیم:
from woocommerce import API wcapi = API( url="http://example.com", consumer_key="ck_XXXXXXXXX", consumer_secret="cs_XXXXXXXXX", version="wc/v3", user_agent="my user agent" )
از بین همه پارامترهای سازنده کلاس API که توی کد بالا میبینید user_agent اختیاریه و بقیه اجباری هستن ولی خب من موقع استفاده از user_agent پیشفرض به مشکل خوردم و گفتم اینجا هم بگم اگر برای شما هم پیش اومد.
لیست همه پارامترهای سازنده کلاس API رو هم میتونید توی اینجا ببینید.
خب تا الان آبجکت wcapi رو برای استفاده از api ووکامرسمون ساختیم حالا باید ببینیم چطور میشه ازش استفاده کرد.
این آبجکتی که ما ساختیم 4 تا متد داره به نامهای get, post, put, delete و options. هرکدوم از این متدها 2 تا پارامتر مشترک میگیرن به نام endpoint و **kwargs. جزئیات در مورد اینکه اون ** توی **kwargs چیکار میکنه رو میتونید اینجا بخونید. اسم این متدها معادل متد http هست که اجرا میکنن.
پارامتر endpoint که endpoint مربوط به اون چیزی که میخوایم روش عملیاتمون رو انجام بدیم رو میگیره مثلا برای گرفتن لیست محصولات، ‘product’ رو به عنوان endpoint پاس میدیم. جزئیات بیشتر در مورد endpoint ها توی مستندات api ووکامرس اومده.
خب نکتهای که هست اینه که همهی این متدها ی params هم میگیرن که توی **kwargs قرار میگیره. این params از نوع دیکشنریه و url params رو باید توی اون پاس بدیم. هر endpoint یک سری params مربوط به خودش رو داره. جزئیات بیشتر در مورد params مربوط به هر endpoint ووکامرس رو توی مستندات مربوط به اون endpoint بخونید.
متدهای put و post ی پارامتر دیگه هم به نام data میگیرن که نوعش دیکشنریه و نهایتا تبدیل به json میشه و توی بدنه متد post و put ارسال میشه. مقادیری که توی data باید پاس داده بشه برای هر endpoint متفاوته پس مطالعه مستندات api ووکامرس توی این مورد هم ضروریه.
خب حالا وقتشه که بریم در مورد فانکشنای put, post, delete, options و get صحبت کنیم. ریز جزئیات رو نمیگم چون از حوصله این مقاله خارجه 🙂
متد options: خب این متد رو من ندیدم توی خود مستندات ووکارس توضیح داده باشه پس ازش میگذرم 🙂 البته شاید بعدتر ووکامرس این متد رو هم استفاده کنه.
متد delete: همونطور که از اسمش مشخصه برای حذف کردن ی آیتم استفاده میشه. مثلا اگه بخوایم ی کوپن با آیدی 10 رو حذف کنیم کافیه متد delete رو به شکل زیر صدا کنیم:
wcapi.delete("coupons/10")
متد post: برای ساختن ی آیتم استفاده میشه. مثلا برای ساختن ی کوپن از کد زیر استفاده میکنیم:
date = { "code": "10off", "discount_type": "percent", "amount": "10", "individual_use": True, "exclude_sale_items": True, "minimum_amount": "100.00" } wcapi.post('coupons', data=data)
متد put: برای ویرایش آیتم استفاده میشه. مثلا برای تغییر مقدار کوپن با آیدی 719 کد زیر این کار رو انجام میده:
date = { "amount": "5" } wcapi.put('coupons/719', data=data)
متد get: این متد به دو شکل استفاده میشه. شکل اول برای گرفتن مشخصات ی آیتم با آیدی مشخص مثلا کوپن با آیدی 5:
wcapi.get("coupons/5")
شکل دوم برای گرفتن لیستی از آیتمها مثلا لیست محصولات که به شکل زیر میشه:
wcapi.get("products")
خب نهایتا میرسیم به نحوه استفاده از params. مثلا ما میخوایم لیست محصولات رو بگیریم به شکلی که توی هر صفحه 5 تا محصول باشه و ما صفحه چهارم رو داشته باشیم اگه مستندات رو برای لیست کردن محصولات نگاه کنید پارامترهایی که قبول میکنه رو میتونید ببینید. مثلا پارامتر per_page برای مشخص کردن تعداد محصولات توی هر صفحست که توی مثال ما باید مقدارش 5 باشه و پارامتر page برای مشخص کردن صفحهایه که میخوایم محصولاتش رو دریافت کنیم که مقدارش اینجا میشه 4. کدی که در نهایت مینویسیم به صورت زیر میشه:
params = { "page": 4, "per_page": 5 } wcapi.get('products', params=params)
منابع استفاده شده
خب توی این مطلب پایه کار با این کتابخونه رو توضیح دادم و شما با مطالعه مستندات کتابخونه و مستندات api ووکامرس میتونید جزئیات بیشتری رو یاد بگیرید.