
در این آموزش میخواهیم در ووکامرس کاری کنیم که اگر قیمت صفر گذاشتیم تماس بگیرید به جای قیمت ووکامرس نمایش داده شود یعنی اگر قیمت صفر بود به جای اینکه عدد صفر را نمایش دهد متن دلخواه نمایش دهد .
برای اینکار کافیه کد زیر را کپی نمایید و در قسمت پیشخوان > نمایش > ویرایشگر پرونده پوسته در انتهای فایل functions.php قرار دهید .
کد افزودن تماس بگیرید به جای قیمت ووکامرس
add_filter( 'woocommerce_get_price_html', 'wooc_price_free_zero_empty', 9999, 2 );
function wooc_price_free_zero_empty( $price, $product ) {
// بررسی برای محصولات متغیر
if ( $product->is_type( 'variable' ) ) {
$min_price = $product->get_variation_price( 'min' );
$max_price = $product->get_variation_price( 'max' );
if ( $min_price == 0 || $max_price == 0 ) {
$price = 'تماس بگیرید';
// غیرفعال کردن دکمه افزودن به سبد خرید
remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
}
} else {
// برای محصولات ساده
if ( '' === $product->get_price() || 0 == $product->get_price() ) {
$price = 'تماس بگیرید';
// غیرفعال کردن دکمه افزودن به سبد خرید
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
}
}
return $price;
}
add_filter('woocommerce_is_purchasable', 'disable_add_to_cart_for_free_products', 10, 2);
function disable_add_to_cart_for_free_products($purchasable, $product) {
// بررسی برای محصولات متغیر
if ( $product->is_type( 'variable' ) ) {
$min_price = $product->get_variation_price( 'min' );
$max_price = $product->get_variation_price( 'max' );
if ( $min_price == 0 || $max_price == 0 ) {
return false; // غیرفعال کردن امکان خرید
}
} else {
if ($product->get_price() == 0 || $product->get_price() === '') {
return false; // غیرفعال کردن امکان خرید برای محصولات ساده
}
}
return $purchasable;
}
در کد میتوانید تماس بگیرید را پیدا کنید و متن دلخواه خودتان را قرار دهید
آنالیز این کد
فیلتر
woocommerce_get_price_html- اگر قیمت محصول (ساده یا متغیر) صفر باشد، متن “تماس بگیرید” جایگزین قیمت میشود.
- برای محصولات متغیر، اگر حداقل یا حداکثر قیمت صفر باشد، این متن نمایش داده میشود.
فیلتر
woocommerce_is_purchasable- اگر قیمت محصول صفر باشد، خرید آن را غیرفعال میکند.
- برای محصولات متغیر، اگر کمترین یا بیشترین قیمت صفر باشد، امکان خرید غیرفعال میشود.




2 پاسخ
سلام وقت بخیر
من این کار را انجام دادم ولی متن تماس بگیرید اضافه نشد
چه کنم؟
سلام خدمت شما
کافیه فقط از فیلتر woocommerce_is_purchasable برای غیرفعال کردن خرید و woocommerce_get_price_html برای نمایش تماس بگیرید استفاده کنید و remove_action رو حذف کنید.