У меня возникла та же проблема, что и у меня был продукт для пожертвований, поэтому он имел индивидуальную цену, то есть вы могли сделать любое количество пожертвований, поэтому на странице магазина я заменил кнопку «Добавить в корзину» для этого товара на «Детали», которая перенаправила бы его на продукт. единственная страница, с которой пользователь мог сделать любое пожертвование. Я использовал этот код. Код помещается в файл functions.php вашей темы или дочерней темы.

ользую woocommerce, и у меня есть следующая проблема:

Товары отображаются на главной странице вместе с их ценой и добавляются в корзину.Кнопка «Добавить в корзину» перенаправляет на страницу корзины.Изображение каждого продукта перенаправляет на страницу продукта.

Важно, чтобы покупатели могли прочитать описание товара, прежде чем добавлять его в корзину.

Есть ли способ заменить кнопку «Добавить в корзину» на «Читать далее», чтобы перенаправить с домашней страницы на страницу каждого продукта, где появится кнопка «Добавить в корзину»?

 LoicTheAztec08 сент. 2017 г., 13:45
Я только что добавил правильный ответ для этого, не могли бы вы попробовать, пожалуйста.

Ответы на вопрос(4)

что и у меня был продукт для пожертвований, поэтому он имел индивидуальную цену, то есть вы могли сделать любое количество пожертвований, поэтому на странице магазина я заменил кнопку «Добавить в корзину» для этого товара на «Детали», которая перенаправила бы его на продукт. единственная страница, с которой пользователь мог сделать любое пожертвование. Я использовал этот код. Код помещается в файл functions.php вашей темы или дочерней темы.

function filter_woocommerce_loop_add_to_cart_link( $quantity,$product ) {  
$product_id = $product->get_id();
$title = $product->get_title();
$sku = $product->get_sku();
if($product_id == get_option( 'woocommerce_donations_product_id' )){
    //var_dump($title);
    //var_dump($sku);
    //var_dump($quantity);
    $simpleURL = get_permalink();
    //var_dump($simpleURL);
    $quantity='<a href="'.$simpleURL.'" data-quantity="1" class="product_type_simple ajax_add_to_cart" data-product_id="'.$product_id.'" data-product_sku="'.$sku.'" aria-label="Read more about “'.$title.'”" rel="nofollow"><span class="filter-popup">Détails</span></a>';
    //var_dump($quantity);
}
return $quantity;
//exit();
};
// add the filter 
add_filter( 'woocommerce_loop_add_to_cart_link','filter_woocommerce_loop_add_to_cart_link', 10, 2 );
Решение Вопроса

ование страниц для woocommerce 3+:

add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );
function replacing_add_to_cart_button( $button, $product  ) {
    $button_text = __("View product", "woocommerce");
    $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';

    return $button;
}

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

Этот код протестирован на WooCommerce 3+ и работает. Вы можете настроить текст кнопки, и вы получите что-то вроде:

 Jason05 февр. 2019 г., 19:00
Этот метод продолжает работать на WC версии 3.5.4
 Aravind NC21 мая 2018 г., 18:49
Спасибо, что поделился.
 Mary09 сент. 2017 г., 18:10
Это потрясающе! Спасибо!
 LoicTheAztec05 февр. 2019 г., 20:00
@ Джейсон Спасибо за информацию :)

если это помогает, это помогло мне применить это решение только к простым продуктам, поскольку переменные продукты в любом случае не «добавляются в корзину» на страницах архива. Таким образом, может быть понятнее, что у продукта есть больше вариантов (если он является переменным). Я также изменил текст «выберите параметры» на «дополнительные параметры» в приведенном ниже примере (поскольку не все продукты в моем случае можно было бы приобрести даже после просмотра URL-адреса страницы одного продукта, что является еще одной нетипичной идеей для этой темы) :

// changes the "select options" text. Forget who to give credit to for this.
add_filter( 'woocommerce_product_add_to_cart_text', function( $text ) {
global $product;
if ( $product->is_type( 'variable' ) ) {
    $text = $product->is_purchasable() ? __( 'More Options', 'woocommerce' ) : __( 'Read more', 'woocommerce' );
}
return $text;
}, 10 );

/**
 * remove add to cart buttons on shop archive page
 */

add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );
function replacing_add_to_cart_button( $button, $product  ) {
if ( $product->is_type( 'simple' ) ) {
$button_text = __("View product", "woocommerce");
$button = '<a class="button" href="' . $product->get_permalink() . '">' . 
$button_text . '</a>';
}
return $button;
}

Добавьте их в свой файл functions.php в папке темы

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart');

Ваш ответ на вопрос