اتصال نرم افزار حسابداری به ووکامرس
با پیشرفت نرم افزار های حسابداری امکاناتی چون سرویس های REST API در آن ها کاملا ایجاد شده است. در بستر وب سرویس های نرم افزار حسابداری ما قابلیت نمایش لیست کالا ها به همراه موجودی در انبار یا قیمت روز هر محصول راخواهیم داشت.
همان طور که می دانید افزونه ووکامرس (WooCommerce) در وردپرس یکی از برترین فروشگاه ساز های اینترنتی محسوب می شود. از این رو اتصال نرم افزار حسابداری به ووکامرس می تواند بسیار مفید برای کسب و کارهای اینترنتی باشد.
روزانه تماس ها زیادی به بنده می شود مبنی بر اینکه شرکت ما یک سیستم انبار داری و نرم افزار حسابداری دارد که قیمت و موجودی کالا ها تماما در آن وجود دارد و می خواهند آن را کاملا هماهنگ با افزونه ووکامرس در وردپرس کنند تا از شر داستان تغییر قیمت ها و موجودی ها کاملا خلاص شوند. مخصوصا زمانی که محصولات در افزونه ووکامرس بسیار زیاد باشد و آن وقت ویرایش هر محصول زمان زیادی از وب مستر ها می گیرد.
اگر الگو های بالا کاملا رعایت شده باشد حال زمان آن می رسد که کار توسعه افزونه اتصال نرم افزار حسابداری به ووکامرس را آغاز کنیم.
برای شروع یک افزونه در وردپرس به نام wp-woocommerce-accounting ، با نوشتن دستور زیر در خط فرمان وردپرس (WP-CLI) ایجاد می کنیم :
wp scaffold plugin wp-woocommerce-accounting
اگر با خط فرمان وردپرس و این تکنولوژی آشنایی ندارید پیشنهاد میکنم حتما دوره ی مدیریت خط فرمان وردپرس در آکادمی وردپرس واقعی را تهیه کنید تا با بروزترین تکنولوژی و متد های مدیریت و توسعه سایت های وردپرس آشنا شوید.
مهم ترین پارامتر در بروز رسانی محصولات ووکامرس از نرم افزار حسابداری ایجاد یک نقطه ی مشترک بین کالا ها در نرم افزار حسابداری و افزونه ووکامرس هست. اصولا در تمامی نرم افزار های حسابداری گزینه ای به نام شناسه کالا وجود دارد. ما برای برقراری ارتباط دو طرفه بین محصولات می بایست شناسه محصول در نرم افزار حسابداری و افزونه ووکامرس رو کاملا برابر وارد کنیم تا در زمان بروز رسانی افزونه متوجه شود که کدام محصول باید در حال حاضر بروز رسانی شود.
همان طور که می دانید هر یک از محصولات ووکامرس در جدول پست با پست تایپ مقدار product واقع شده است.شناسه محصول نیز در بانک اطلاعاتی وردپرس با پست متای sku_ برای پست قرار دارد.از این رو اگر بخواهیم یک محصول را بر اساس شناسه کالا در سیستم وردپرس خود جستجو کنیم می توانیم از تابع wc_get_product_id_by_sku در ووکامرس بهره بگیریم.
با فرض اینکه محصولی در ووکامرس وجود داشته باشد با شناسه 68952 و بخواهیم قیمت فروش آن را در سایت نشان دهیم خواهیم داشت :
$sku = 68952;
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id >0) {
// Get Product By ID in WooCommerce
$product = wc_get_product( $product_id );
echo $product->get_price();
}
در کد بالا ابتدا شناسه محصول را در سیستم ووکامرس جستجو کردیم و اگر کالایی وجود داشت ، توسط تابع wc_get_product اطلاعات آن را دریافت می کنیم.
بعد از دریافت شناسه کالا در دیتابیس وردپرس ، حال نوبت به آن می رسد که بتوانیم قیمت و موجودی کالای یک محصول را بروز رسانی کنیم. قبل از آشنایی با این بخش ابتدا تئوری موجودی ها و قیمت کالا در بانک اطلاعاتی وردپرس باید بیشتر بشناسیم:
موجودی کالا در بانک اطلاعاتی ووکامرس دارای 3 شناسه اصلی می باشد:
در هنگام اتصال نرم افزار حسابداری به ووکامرس می بایست به قیمت ها بسیار دقت کرد. در حالت عادی در ووکامرس دو نوع قیمت گذاری وجود دارد:
حال که با تئوری قیمت و موجودی کالا در ووکامرس آشنا شدید ، برای تغییر قیمت و موجودی کالا با شناسه 68952 در ووکامرس خواهیم داشت:
// Product Information
$sku = 68952;
$regular_price = 22000;
$sale_price = 15000;
$quantity = 0;
// Search Product By SKU
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id > 0) {
// Get Product By ID in WooCommerce
$product = new WC_Product($product_id);
// Set product stock quantity
$product->set_stock_quantity($quantity);
if ($quantity == 0) {
$product->set_stock_status('outofstock');
} else {
$product->set_stock_status('instock');
}
// Set Product Price
if ($regular_price == $sale_price) {
$product->set_price($regular_price);
} else {
$product->set_regular_price($regular_price);
$product->set_sale_price($sale_price);
}
// Save Product
$product->save();
}
فرض کنید در نرم افزار حسابداری شما یک کالا با شناسه 68952 وجود داشت که نرخ اصلی آن 22000 و نرخ با تخفیف آن 15000 تومان و موجودی کالا در نرم افزار حسابداری صفر می باشد. برای بروز رسانی این مقدار در افزونه ووکامرس توسط کلاس WC_Product این کار را انجام می دهیم.
توجه : دقت کنید که گاها نرخ محصولات در نرم افزار های حسابداری بر اساس ریال می باشد. ولی قیمت ها داخل وب سایت وردپرس ما بر اساس تومان تنظیم شده است. در این جالت حتما می بایست با تقسیم کردن اعداد بر ده قیمت را از ریال به تومان تبدیل کنید.
در هسته ی وردپرس مجموع توابعی وجود دارد به نام HTTP API که امکان برقراری ارتباط با وب سرویس ها و API های دیگر را فراهم می کند. اگر بخواهیم دو مورد از معروف ترین این تابع ها را نام ببریم:
کاری که شما به عنوان توسعه دهنده وردپرس می بایست انجام دهید آن هست که ابتدا می بایست بر اساس مستندات وب سرویس نرم افزار حسابداری خود یکی از این دو تابع را انتخاب و درخواست را به سرور ارسال کنید.
من در مثال زیر یک نمونه کد دریافت اطلاعات یک محصول با شناسه 3569 از نرم افزار حسابداری هلو را در وردپرس بیان می کنم :
// Get Product Data From Accounting Software API
$sku = '3569';
$url = 'http://{server-ip}:8080/TncHoloo/api/Product?code='.$sku;
$token = 'xxxxx';
// Send Request To API
$request = wp_remote_get($url, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'timeout' => 120,
'body' => array(),
'method' => 'GET',
'headers' => array(
'Authorization' => $token,
)
));
// Check Connect Error
if (is_wp_error($request)) {
return false;
}
// Get Body Of Request
$body = wp_remote_retrieve_body($request);
$array = json_decode($body, true);
// Return Data
return $array;
طبق مستندات برای اتصال نرم افزار حسابداری به ووکامرس ، ما آدرس درخواست به سرور و توکن ایجاد شده در آن را توسط دستور GET ارسال کردیم و در صورتی که خطایی وارد نشود اطلاعات محصول در قالب آرایه زبان PHP به ما داده خواهد شد.
تا بدین جا ما یاد گرفتیم چگونه اطلاعات یک محصول از نرم افزار حسابداری را در وردپرس بدست بیاوریم. همچنین یاد گرفتیم اطلاعات بدست آمده را چگونه در چرخه بروز رسانی محصولات ووکامرس ، بروز رسانی کنیم.
حال سوال اینجاست در چه زمانی می بایست دستورات ما شروع به اجرا کردن کنند تا روند کاملا اتوماتیک باشد ؟ این کار را هم می توان توسط سیستم Cron و زمان بندی وردپرس انجام داد و هم می توان توسط هوک های وردپرس در زمان نقطه ی جذب شروع به اجرا شدن کرد.
حتما بخوانید : هوک وردپرس و استفاده از اکشن و فیلتر در توسعه پذیری وردپرس
به شخصه سیستم هوک های وردپرس را بیشتر می پسندم زیرا در هوک وردپرس ما دقیقا می دانیم کدام محصول الان درخواست داده شده در صورتی که در سیستم Cron می بایست جدا از شناسه کالاها ، تمامی محصولات در یک درخواست بروز رسانی شوند. این مورد خوب است اما برای فروشگاه ها با تعداد محصولات زیاد اختلالاتی در روند کار ایجاد می کند.
روند تمامی این هوک های وردپرس بدین صورت هست که ابتدا شناسه محصول دریافت می شود سپس در محصولات ووکامرس جستجو میکنیم که آیا محصولی دارای شناسه محصول هست یا خیر ؟ بعد از دریافت شناسه محصول ، درخواست به سرور نرم افزار حسابداری ارسال می شود و اگر اطلاعاتی دریافت شد سریعا بروز رسانی را در ووکامرس انجام می دهیم.
من در زیر 4 نمونه از هوک های ووکامرس را بیان می کنم. البته هوک های بسیار زیادی در ووکامرس وجود دارد که محدود به چهار مورد زیر تنها نیست.
add_action('woocommerce_update_product', 'sync_on_product_save', 10, 1);
function sync_on_product_save($product_id)
{
// Check Product has _SKU
$sku = get_post_meta($product_id, '_sku', true);
if (!empty($sku)) {
// Connect To API
// Update in WooCommerce
}
}
add_filter('woocommerce_product_type_query', 'before_get_product_type', 10, 2);
function before_get_product_type($override, $product_id)
{
// Check Product has _SKU
$sku = get_post_meta($product_id, '_sku', true);
if (!empty($sku)) {
// Connect To API
// Update in WooCommerce
}
return false;
}
add_filter('woocommerce_add_to_cart_validation', 'item_add_to_cart', 99, 3);
function item_add_to_cart($passed, $product_id, $quantity)
{
// Check Product has _SKU
$sku = get_post_meta($product_id, '_sku', true);
if (!empty($sku)) {
// Connect To API
// Update in WooCommerce
}
return false;
}
add_action('wp', 'show_product_page');
function show_product_page()
{
global $post;
if (function_exists('is_product')) {
if (is_product()) {
// Get Product ID
$product_id = $post->ID;
// Check Product has _SKU
$sku = get_post_meta($product_id, '_sku', true);
if (!empty($sku)) {
// Connect To API
// Update in WooCommerce
}
}
}
}
همواره سیستم سازی در شرکت ها یکی از لذت بخش ترین و در عین حال پیچیده ترین کارهاست. اگر شما هم می خواهید نرم افزار حسابداری خود را به سیستم ووکامرس متصل کنید می توانید با کارشناسان وردپرس واقعی جهت ثبت سفارش برنامه نویسی افزونه وردپرس تماس بگیرید.
همان طور که می دانید افزونه ووکامرس درنسخه های اخیر یک تغییر عمده در سفارشات…
در زمان تهیه افزونه های وردپرس برای اتصال نرم افزار حسابداری به سیستم فروشگاهی ووکامرس…
بالاخره در نسخه ی وردپرس 7.0 سرویس اتصال به سرویس هی خارجی مانند هوش مصنوعی…
تا به حال شده با دلنگرانی در داشبورد سایت وردپرسیتان بنشینید، چون بخشی از سایت…
شاید شما هم این صحنه را دیده باشید که تیم محتوا با شوق فراوان مقالهای…
صبح زود از خواب بیدار میشوید، قهوهتان را برمیدارید و مثل همیشه سری به سرچ…