wordpress/woocommerce: удалите цену, если ноль

Вопрос: Я занят сайтом wordpress/woocommerce, и я хотел бы скрыть цену элемента, когда он равен нулю на странице категории продукта/архива. Я пробовал смотреть в Интернете и в php файлах, но не смог найти, где я должен добавить оператор if. Мое знание php довольно ограничено. Мне было интересно, есть ли у кого-то еще опыт с этим

Вопрос:

Я занят сайтом wordpress/woocommerce, и я хотел бы скрыть цену элемента, когда он равен нулю на странице категории продукта/архива.

Я пробовал смотреть в Интернете и в php файлах, но не смог найти, где я должен добавить оператор if.

Мое знание php довольно ограничено. Мне было интересно, есть ли у кого-то еще опыт с этим или может помочь мне в правильном направлении

Благодарю!

Лучший ответ:

Я не тестировал его, но я ожидаю, что что-то подобное должно выполнить эту работу. Добавьте это в свой файл functions.php.

add_action(‘woocommerce_before_shop_loop_item’,’custom_remove_loop_price’); function custom_remove_loop_price(){ global $product; if(!$product->price){ remove_action(‘woocommerce_after_shop_loop_item_title’,’woocommerce_template_loop_price’,10); } } Ответ №1

Этот, наконец, сделал это для меня (используя woocommerce 3.0.8):

function cw_change_product_price_display( $price ) { $clear = trim(preg_replace(‘/ +/’, ‘ ‘, preg_replace(‘/[^A-Za-z0-9 ]/’, ‘ ‘, urldecode(html_entity_decode(strip_tags($price)))))); if($clear == «0 00″){ return »; } return $price; } add_filter( ‘woocommerce_get_price_html’, ‘cw_change_product_price_display’ ); add_filter( ‘woocommerce_cart_item_price’, ‘cw_change_product_price_display’ ); Ответ №2

Этот код работает с Woocommerce 3.6.3. Скопируйте в ваши functions.php

//Hide Price when Price is Zero add_filter( ‘woocommerce_get_price_html’,’maybe_hide_price’,10,2); function maybe_hide_price($price_html, $product){ if($product->get_price()>0){ return $price_html; } return »; } // End of above code Ответ №3

Здесь другой подход:

add_filter( ‘woocommerce_get_price_html’,’maybe_hide_price’,10,2); function maybe_hide_price($price_html, $product){ if($product->get_price()>0){ return $price_html; } return »; } Ответ №4

Попробовал ответ джареда, но, как кто-то сказал, он убрал каждую цену, как только условие было выполнено. В конечном итоге я выбрал это решение, в котором он удалил действие, если цена была равна 0, и добавил его обратно, если это не так. Кажется, работает.

public function woocommerce_after_shop_loop_item_title_remove_product_price(){ global $product; $price = floatval( $product->get_price() ); if( $price <= 0 ){ remove_action(‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’, 10); }else{ add_action(‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’, 10); } } add_action( ‘woocommerce_after_shop_loop_item_title’, ‘category_page_changes’, 0 );

Оцените статью
Добавить комментарий