Настроить кнопку «Добавить в корзину» для определенной категории продукта в WooCommerce

Это мой код:

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' ); // 2.1 + function woo_custom_cart_button_text( $text ) { if( has_term( 'liners', 'product_cat' ) ){ $text = __( ' ', 'your-plugin' ); echo do_shortcode('<a href="#" class="popmake-923">Request а Quote</a>'); } return $text; } 

Мне нужно сделать функцию, чтобы заменить кнопку «Добавить в корзину» Url и Text только для одной конкретной категории продукта.

Эта кнопка вызывает Лайтбокс с формой контакта, а текст для этой кнопки будет: Запросить цитату .

Как я могу заставить его работать так, как ожидалось?

Вот как это работает на самом деле по этой ссылке .

Обновлено: для 2 различных категорий товаров (2 разных кнопки)

Глобальное и полное решение для ваших продуктов из категории «линейки»:

  1. Если один из ваших продуктов (в категории продуктов линейки) не является переменным продуктом, вам нужно сначала заменить кнопку «добавить в корзину» на страницах магазина и архивов с помощью простой кнопки, связанной с продуктом.
  2. На страницах одного продукта вам нужно удалить поля с кнопками и количествами в корзину, чтобы заменить их на свою пользовательскую кнопку.

Вот этот код:

 // Replacing the button add to cart by a link to the product in Shop and archives pages add_filter( 'woocommerce_loop_add_to_cart_link', 'conditionally_replacing_add_to_cart_button', 10, 2 ); function conditionally_replacing_add_to_cart_button( $button, $product ) { $categories = array('liners','custom-classics'); $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // For 'liners' product category if( has_term( $categories, 'product_cat', $product_id ) ){ $button_text = __("View product", "woocommerce"); $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>'; } return $button; } // replacing add to cart button and quantities by your custom button in Single product pages add_action( 'woocommerce_single_product_summary', 'conditionally_replacing_template_single_add_to_cart', 1, 0 ); function conditionally_replacing_template_single_add_to_cart() { global $product; $categories = array('liners','custom-classics'); $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; function custom_button_replacement(){ global $product; $categories = array('liners','custom-classics'); $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; if( has_term( $categories[0], 'product_cat', $product_id ) ) $class_id = "923"; // liners elseif( has_term( $categories[1], 'product_cat', $product_id ) ) $class_id = "925"; // custom-classics else $class_id = ""; // none // set below your custom text $button_text = __('Request а Quote', 'woocommerce'); // Output your custom text echo '<a href="#" class="popmake-'.$class_id.' button">'.$button_text.'</a>'; } // Only for 'liners' and 'custom-classics' product categories if( has_term( $categories, 'product_cat', $product_id ) ): // For variable product types if( $product->is_type( 'variable' ) ){ // Removing add to cart button and quantities remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 ); // The button replacement add_action( 'woocommerce_single_variation', 'custom_button_replacement', 20 ); } else // For all other product types { // Removing add to cart button and quantities remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); // The button replacement add_action( 'woocommerce_single_product_summary', 'custom_button_replacement', 30 ); } endif; } 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код проверяется и работает для всех типов продуктов (простых, переменных …) . Вы получите (пример) :

введите описание изображения здесь


введите описание изображения здесь