سلام وقت بخیر
برای اینکار باید کدهای قالب رو دستکاری کرد. معمولا چنین امکاناتی رو میشه توی قالب های اختصاصی پیاده سازی کرد ولی چنین کاری روی قالب وودمارت که در آینده قراره آپدیت بشه یه مقدار سخته انجام دادنش. نه از نظر کدنویسی، بلکه از نظر اینکه برای آپدیت های بعدی باید خیلی چیزا رو دستی کپی کنید.
ولی شاید بشه مشکل رو با استفاده از فانکشن ها حل کرد.
مخفی کردن محصولات ناموجود در لیست محصولات مرتبط
این کد وظیفش اینه که بیاد توی حلقه محصولات مرتبط، اون محصولاتی که ناموجود هستن رو مخفی می کنه. تا حدودی فکر کنم چیزیه که بخواین ولی این کد روی بخش محصولات مرتبطی کار می کنه که کدنویسیش استاندارد باشه و با ووکامرس کاملا سازگاری داشته باشه و شخصی سازی شده نباشه. روی وودمارت تست نکردم ولی روی قالب های مخزن وردپرس که از ووکامرس پشتیبانی می کنن کار میکنه. تست کنید.
این کد باید توی فایل functions.php
قرار داده بشه.
function hide_out_of_stock_option( $option ){
return 'yes';
}
add_action( 'woocommerce_before_template_part', function( $template_name ) {
if( $template_name !== "single-product/related.php" ) {
return;
}
add_filter( 'pre_option_woocommerce_hide_out_of_stock_items', 'hide_out_of_stock_option' );
} );
add_action( 'woocommerce_after_template_part', function( $template_name ) {
if( $template_name !== "single-product/related.php" ) {
return;
}
remove_filter( 'pre_option_woocommerce_hide_out_of_stock_items', 'hide_out_of_stock_option' );
} );
بررسی ناموجود بودن محصول و اجرای کد دلخواه
توی این روش، شما باید فایل محصول تکی رو ویرایش کنید و این کد رو قرار بدید. کار این کد اینه که میاد محصول فعلی رو چک می کنه که آیا موجود هست یا ناموجود. شما می تونید با استفاده از این دستور شرطی، کاری کنید که در صورتی که محصول فعلی ناموجود باشه چه کدی اجرا بشه و اگه موجود بود چه کدی اجرا بشه.
بنابراین می تونید برای محصولات کدهای مختلفی اجرا کنید.
<?php if($product->get_stock_quantity()>0) {
echo 'در انبار موجود است';
} else {
echo 'در انبار موجود نیست';
} ?>
من توی کد بالا از echo
استفاده کردم ولی شما باید کدی که قصد دارید اجرا بشه رو توی فایل جداگانه ای توی پوشه قالب قرار بدید و با تابع get_template_part
کدها رو از فایل های جداگانه فراخوانی کنید. مثلا:
<?php if($product->get_stock_quantity()>0) {
get_template_part( 'instockposts' );
} else {
get_template_part( 'outofstockposts' );
} ?>
و طبق کد بالا، شما توی پوشه قالبتون فایل هایی به نام instockposts.php
و outofstockposts.php
ایجاد می کنید و کد محصولات مرتبط خودتون رو داخل اینا قرار میدید.