آسان ترین روش نمایش محصولات مرتبط در فروشگاه ووکامرس بدون افزونه
مقالات وردپرسچگونه لیست محصولات مرتبط را در فروشگاه ووکامرس نمایش دهیم ؟ بدون استفاده از افزونه ، محصولات مرتبط را برای فروشگاه خودتان ایجاد کنید .

یکی از موارد مهمی که در فروشگاههای اینترنتی وجود دارد بدون شک نمایش محصولات مرتبط با محصول فعلی است . زمانیکه کاربری قصد خرید یک محصول را دارد ممکن است سایر محصولات مرتبط با محصول فعلی را نیز نیاز داشته باشد پس ضروریست در صفحه سینگل محصول، محصولات مرتبط با همان محصول را نمایش دهید .
یا ممکن است در یک صفحه خاص مثلا در بخش سایدبار یا صفحه اصلی قصد نمایش محصولات مرتبط براساس یک محصول را داشته باشید به چه شکلی میتوانید این کار را انجام دهید ؟ در این مقاله با نحوه نمایش محصولات مرتبط با یک محصول در ووکامرس با ساده ترین راه شما را آشنا خواهیم کرد.
روشهای مختلف نمایش محصولات مرتبط
در وردپرس به چند طریق از جمله استفاده از افزونهها و یا برنامه نویسی اختصاصی میتوان این کار را انجام داد. اما در این آموزش قصد داریم بدون استفاده از افزونه خاصی و با برنامه نویسی به سادهترین شکل ممکن اقدام به نمایش محصولات مرتبط کنیم.
در وهله اول باید توجه داشته باشیم که نحوه دریافت محصولات مرتبط به چه شکلی است. در وردپرس محصولات را میتوانیم با استفاده از برچسبها و دسته بندی ها گروه بندی کرده و محصولات مرتبط با یکدیگر را با یک عنوان مشترک برچسب گذاری کنیم یا در یک دسته قرار دهیم.
بنابراین برای نمایش محصولات مرتبط ، کافیست محصولاتی که با محصول مشخص ، در یک برچسب مشترک برچسب گذاری شده باشند و یا دارای یک دسته مشترک باشند را نمایش دهیم.
محصولات مرتبط را معمولا در صفحه جزئیات یک محصول نمایش میدهند ( یعنی در فایل single-product.php باید کدنویسی کنید ) پس در محل مورد نظر از این فایل باید شروع به برنامه نویسی کنید.
در این بخش قصد داریم براساس دستههای مشترک و برچشب مشترک ، محصولات مرتبط را پیاده کنیم پس در قدم اول لازم است تا دستههای محصول فعلی را دریافت کرده و در یک آرایه ذخیره کنیم .
سپس برچسبهای محصول فعلی را نیز باید از دیتا بیس دریافت کرده و در یک آرایه ثبت کنیم.
در مرحله بعدی باید از دیتابیس وردپرس ، لیست محصولاتی را دریافت کنیم که حداقل با محصول فعلی دارای یک برچسب یا دسته بندی مشترک باشند.
این کار کمی شاید برای شما پیچیده باشد اما روند کلی کار در هر صورت به همین شکل است. ولی در ووکامرس تابعی وجود دارد که شما به راحتی با استفاده از آن میتوانید آیدی محصولات مرتبط با یک محصول را دریافت کرده و سپس در ادامه با استفاده از یک کوئری اقدام به دریافت و نمایش محصولات کنید.
تابع wc_get_related_products
همانطور که در بالا اشاره کردیم در ووکامرس تابعی وجود دارد که با استفاده از آن میتوان آیدی محصولات مرتبط با یک محصول را دریافت کرد . اسم این تابع wc_get_related_products می باشد. در ابتدا بد نیست درباره پارامترهای ورودی این تابع کمی صحبت کنیم. شکل کلی این تابع بصورت زیر است و همانطور که مشخص کردیم دارای 3 پارامتر می باشد.
wc_get_related_products( $product_id, $limit, $exclude_ids )
product_id$: این پارامتر آیدی محصول فعلی می باشد که میتوانید با استفاده از تابع ()get_the_ID
آیدی همین محصول را دریافت کنید.
limit$: با استفاده از این پارامتر میتوانید حداکثر تعداد محصولات مرتبط با محصول فعلی را که قصد دارید نمایش داده شود را مشخص کنید.
exclude_ids$: در این پارامتر میتوانید آیدی مصحولاتی که قصد دارید نمایش داده نشوند را مشخص کنید. این پارامتر به صورت آرایه تعریف می شود.
توجه: خروجی این تابع نیز به صورت یک آرایه خواهد بود و آیدی محصولات مرتبط را در اختیار شما قرار میدهد با استفاده از کدهای زیر میتوانیم محصولات مرتبط را دریافت و نمایش دهیم.
$related = wc_get_related_products(get_the_ID(), 6,[1,2]);
if (is_array($related) && !empty($related)){
$products = new WP_Query(["post_type" => "product", "post__in" => $related]);
if ($products->have_posts()){
while ($products->have_posts()){
$products->the_post();
get_template_part("parts/loop", "product");
}
}
}
در کد بالا در ابتدا با استفاده از تابع معرفی شده اقدام به دریافت آیدی محصولات مرتبط با محصول فعلی کردهایم توجه کنید با تنظیم پارامتر دوم قرار است حداکثر 6 محصول مرتبط را برای شما دریافت کند و در ادامه نیز در پارامتر سوم مشخص کردیم محصولاتی که آیدی آن ها 1 و 2 است را در صورتیکه جز محصولات مرتبط محصولات ما باشد فیلتر کرده و نمایش ندهد.
در خط بعدی قبل از آنکه با استفاده از WP_Query به دیتا بیس متصل شویم در ابتدا بررسی می کنیم که حتما محصول مرتبطی وجود داشته باشد تا بتوانیم با استفاده از کوئری اطلاعات آن محصول را جهت نمایش دریافت کنیم.
در خط سوم با استفاده از شی از کلاس WP_Query اقدام به دریافت اطلاعات پستها با استفاده از تنظیمات مشخص شده میکنیم . در ابتدا نیاز است مشخص کنیم نوع پستهای ما یا در حقیقت پست تایپی که قرار است اطلاعات آن ها دریافت شود چیست به همین دلیل post_type را product در نظر گرفتهایم چرا که نام پست تایپ ووکامرس product است.
در پارامتر بعدی مشخص کردیم آیدی پستها باید جزو آیدی محصولات مرتبط ما باشند برای همین post__in را با مقدار related که همان آیدی محصولات مرتبط ما است مقدار دهی کردهایم.
در خط بعدی دوباره بررسی کردیم که حتما کوئری ما دارای محصولی باشد یعنی محصول مرتبطی با محصول فعلی ما وجود داشته باشد برای این کار از تابع ()have_posts استفاده کردیم.
در مرحله بعدی از حلقه while استفاده کردیم و مشخص کردیم تا زمانیکه پستی برای نمایش موجود باشد یکی یکی با استفاده از تابع ()the_post آز ارایه پستهای دریافتی برداشته و نمایش دهد. زمانیکه از این تابع استفاده میکنیم یکی از محصولات مرتبط دریافتی را برداشته و در داخل متغیر سراسری post$ قرار میدهد تا بتوانیم از آن استفاده کنیم.
در مرحله پایانی نیز با استفاده از تابع get_template_part اطلاعات محصولات مرتبط را نمایش میدهیم برای این کار کافیست برای مثال در داخل قالب خودتان پوشهای به نام parts ایجاد کرده سپس در داخل آن فایلی تحت عنوان loop-product.php ایجاد کنید و کد های مربوط به نمایش کارت محصول را در آن قرار دهید.
تابع get_template_part در حقیقت همانند include و require در php عمل میکند و کدهای موجود در مسیر مشخص شده را در محل مورد نظر ایمپورت ( وارد ) میکند.
تکمیل کد
اگر با طراحی و برنامه نویسی قالب وردپرس کمی آشنایی دارید ، حتما اطلاع دارید که جهت نمایش اطلاعات محصولات داخل حلقه while از توابعی مثل get_the_title و the_permalink و … استفاده کنید . تمامی این اطلاعات داخل فایل loop-product.php قرار دارند .
شما اصلا میتوانید از این فایل یعنی loop-product.php استفاده نکنید و مستقیما در داخل همین قسمت و داخل حلقه بصورت زیر عمل کنید :
<?php
while ($products->have_posts) { $products->the_post();
<h3>
<a href="<?php the_permalink(); ?>">
<?php echo get_the_title(); ?>
</a>
</h3>
<?php } ?>
در مورد طراحی و استایل دهی به این قسمت نیز لازم است تا خودتان طبق سلیقه و یا طراحی قالب ، این قسمت را دیزاین کنید و سپس طبق دیزاین ، از توابعی که نیاز دارید استفاده کنید .
توضیحات بیشتر
توجه داشته باشید که این روش یکی از سادهترین و استانداردترین شکلهای نمایش محصولات مرتبط با محصول مورد نظر در ووکامرس بود. در این آموزش سعی شد از سادهترین کدهای برنامه نویسی استفاده شود.
برای مثال شما میتوانستید بجای استفاده از تابع آماده ووکامرس خودتان به صورت دستی و با استفاده از توابع وردپرسی اقدام به دریافت برچسبها و دسته بندیهای محصول مورد نظر کنید و در ادامه با نوشتن دستورات پیچیدهتر کلاس WP_Query ، اقدام به دریافت و نمایش محصولات مرتبط کنید.
همچنین لازم به ذکر است کلاس WP_Query حاوی تنظیمات و کانفیگهای بسیار متنوعی است که با استفاده از آنها میتوانید از این کلاس در شرایط و کاربردهای مختلف و متنوعی استفاده کنید. امیدواریم این مطلب برای شما علاقمندان به وردپرس مفید واقع شده باشد .
سلام متشکر ، تابع مذکور توسط خود داکیومنت ووکامرس ارائه شده و کدنویسی شمارو بسیار کم خواهد کرد