گاهی نیاز داریم تا قیمتی رو از سایت (الف) دریافت کنیم و در سایت (ب) نمایش دهید. به این منظور میتوانید از REST API ووکامرس استفاده کنید . توضیحی کوتاه این است شما محصولاتی را در سایت فروشگاهی خود دارید و سایت دیگری در دامنه ای دیگر یا ساب دامین خود دارید و می خواهید در قسمتی از برگه به صورت سفارشی قیمت ها را نمایش دهید. و زمانیکه قیمت ها را در سایت الف تغییر یا بروزرسانی کردید به صورت اتوماتیک در سایت ب نیز تغییر ئیدا کند.
چگونه قیمت محصول را از سایت "A" دریافت کنید، کدهای لازم را در سایت "B" ذخیره کنید، و آن را بهدرستی در المنتور به نمایش بگذارید.
مرحله اول: دریافت قیمت محصول از سایت "A"
ابتدا باید API ووکامرس را در سایت “A” فعال کنیم و کلیدهای لازم رو دریافت کنیم.
- به پیشخوان وردپرس سایت “الف” بروید.
- از منوی سمت چپ به ووکامرس > تنظیمات بروید.
به تب پیشرفته رفته و روی گزینه REST API کلیک کنید. - روی افزودن کلید API کلیک کنید.
- برای نام کلید چیزی مثل “API برای سایت ب” وارد کنید.
- سطح دسترسی را روی Read بگذارید (فقط خواندن).
- بعد از ایجاد، دو مقدار Consumer Key و Consumer Secret به شما داده میشود. این دو مقدار را کپی کنید و ذخیره کنید، چرا که در مراحل بعدی به آنها نیاز داریم.
مرحله 2: تنظیم کد در سایت "B" برای دریافت قیمت
حالا باید به سایت “B” برویم و کدی بنویسیم که با API سایت “A” ارتباط برقرار کند و قیمت محصول را دریافت کند. این کد را میتوانیم در فایل functions.php قرار دهیم.
به پنل وردپرس سایت “B” بروید.
از منوی سمت چپ – نمایش > ویرایشگر پوسته بروید.
فایل functions.php قالب خود را باز کنید و کدهای زیر را در انتهای آن اضافه کنید.
function fetch_product_price_from_site_a( $product_id ) {
// آدرس API سایت الف
$api_url = 'https://site-A.com/wp-json/wc/v3/products/' . $product_id;
// کلیدهای API که از سایت الف دریافت کردهاید
$consumer_key = 'ck_your_consumer_key'; // جایگزین با کلید API واقعی
$consumer_secret = 'cs_your_consumer_secret'; // جایگزین با کلید Secret واقعی
// ارسال درخواست HTTP به API سایت الف
$response = wp_remote_get( $api_url, array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( $consumer_key . ':' . $consumer_secret ),
),
));
// پردازش پاسخ API
if ( is_wp_error( $response ) ) {
return 'Error fetching price'; // اگر درخواست خطا داشته باشد
}
$data = json_decode( wp_remote_retrieve_body( $response ), true ); // تبدیل پاسخ JSON به آرایه PHP
// بازگرداندن قیمت محصول
if ( isset( $data['price'] ) ) {
return $data['price'];
}
return 'Price not found'; // اگر قیمت پیدا نشد
}
- یک درخواست HTTP به سایت “B” ارسال میکند و قیمت محصول را با استفاده از API ووکامرس دریافت میکند.
- کلیدهای API که از سایت “A” دریافت کردهاید، برای احراز هویت استفاده میشوند.
- پاسخ API به صورت JSON برمیگردد و سپس ما قیمت را از آن استخراج میکنیم.
- حالا باید قیمت را ذخیره کنیم و آن را در سایت “B” نمایش دهیم.
- این تابع را نیز به فایل functions.php اضافه کنید:
function display_product_price_in_site_b( $product_id ) {
// دریافت قیمت از سایت الف
$price = fetch_product_price_from_site_a( $product_id );
// بررسی اینکه آیا قیمت عدد است
if ( is_numeric( $price ) ) {
return wc_price( $price ); // فرمتبندی و بازگشت قیمت
}
return 'Price not available'; // اگر قیمت پیدا نشد
}
از تابع fetch_product_price_from_site_a() استفاده میکند تا قیمت محصول را از سایت “الف” دریافت کند.
سپس قیمت را با استفاده از تابع wc_price() فرمت میکند تا با واحد پول مناسب نمایش داده شود.
برای اینکه بتونید قیمت را در المنتور استفاده کنید، یک شورتکد تعریف میکنیم تا به راحتی قیمت محصول را در هر کجا از سایت “B” نمایش دهید.
کد زیر را به فایل functions.php اضافه کنید:
function custom_product_price_shortcode( $atts ) {
$atts = shortcode_atts( array(
'product_id' => '', // شناسه محصول سایت الف
), $atts, 'custom_product_price' );
return display_product_price_in_site_b( $atts['product_id'] );
}
add_shortcode( 'product_price', 'custom_product_price_shortcode' );
این شورتکد به شما امکان میدهد که قیمت محصول را از سایت “B” نمایش دهید:
اینم از شورت کد که میتونید داخل ویجت المنتور با نام کد کوتاه ازش لستفاده کنید
[product_price product_id=”123″]
عدد 123 باید با شناسه (ID) محصول در سایت “A” جایگزین شود.
حالا که شورتکد آماده است، میتوانید از آن در المنتور استفاده کنید.
5.1. استفاده از شورتکد در المنتور:
به صفحهای که میخواهید قیمت محصول را نمایش دهید بروید.
در ویرایشگر المنتور، عنصر شورتکد را به صفحه اضافه کنید.
در بخش محتوا، با استفاده از ویجت کد کوتاه میتونید شورتکد زیر را وارد کنید:
[product_price product_id=”123″]
جالب و خوب بود فقط الان مسئله اینه ک ای دی محصول در سایت a با ای دی محصول در سایت b باید یکی باشه که فکر نمیکنم در سایت های مختلف با بارگزاری های متوعی که هست یکی باشن و فکر میکنم با slug یا name و یا اگر با sku باشه نتیجه درستری میده برای بررسی اینکه این محصول در سایت a باشه و در سایت b هم باشه
نه دیگه شما توی سایت Bاصلا نیازی نیست محصولی تعریف کنید داخل ویدئو که گزاشتم مشخص میشه . شما فقط باید در سایت a محصول تعریف کنید