Изменение кнопки "В корзину" на "Выберите" если у товара есть апселлы
Всем привет.
Может кто-то сталкивался с таким или сможет помочь. Нужно в каталоге у карточек менять текст на кнопке "В корзину" на "Выберите" если у этого товара есть апселлы. При нажатии на кнопку "Выберите" человека должно перекидывать на персональную карточку этого товара.
Пробовала делать вот так, но всё крашится
add_filter( 'woocommerce_product_add_to_cart_text', 'saphira_theme_product_btn_text');
function saphira_theme_product_btn_text( $product ) {
$upsells = $product->get_upsell_ids();
if(!empty($upsells) && isset($upsells))
{
$text = 'Выбрать';
}
return __($text, 'woocommerce');
}
add_filter( 'woocommerce_product_add_to_cart_url', 'saphira_theme_product_cart_url');
function saphira_theme_product_cart_url( $product ) {
$upsells = $product->get_upsell_ids();
if(!empty($upsells) && isset($upsells))
{
$url = wc_get_cart_url();
}
return __($url, 'woocommerce');
}
Ответы (1 шт):
Автор решения: Darth KYL
→ Ссылка
Все фильтры изменяют стандартное поведение кнопок на страницах каталога и таксономий.
отключим ajax добавление в корзину для товаров у которых есть апсейлы
add_filter( 'woocommerce_product_supports', 'disable_ajax_add_to_cart', 10, 3 );
function disable_ajax_add_to_cart( $ajax_add_to_cart, $feature, $product ){
return $feature === 'ajax_add_to_cart' && ( is_shop() || is_product_taxonomy() ) && $product->get_upsell_ids() ? false : $ajax_add_to_cart;
}
изменим тест кнопки для товаров у которых есть апсейлы
add_filter( 'woocommerce_product_add_to_cart_text', 'change_add_to_cart_text', 10, 2 );
function change_add_to_cart_text( $button_name, $product ) {
return ( is_shop() || is_product_taxonomy() ) && $product->get_upsell_ids() ? __( 'Choose', 'theme_domain' ) : $button_name;
}
изменим ссылку для товаров у которых есть апсейлы
add_filter( 'woocommerce_product_add_to_cart_url', 'change_add_to_cart_url', 10, 2 );
function change_add_to_cart_url( $url, $product ) {
return ( is_shop() || is_product_taxonomy() ) && $product->get_upsell_ids() ? $product->get_permalink() : $url;
}