Изменить & Ссылка кнопки Добавить в корзину, если продукт уже в корзине - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь изменить ссылку и текст кнопки «Добавить в корзину» на странице архива, если товары уже есть в корзине.

Я допускаю добавление только одного товара на один товар.Но стандартным способом Woocommerce является перенаправление на одну страницу с уведомлением.

Вместо этого я бы хотел, чтобы пользователь либо

  • См. Текст «Просмотр корзины» и направилпользователь в корзину

или

  • Смотрите текст "Добавлено" и не имеете никакой ссылки вообще.

Спасибо

1 Ответ

0 голосов
/ 29 мая 2018

Чтобы изменить текст, вам нужны коды ниже.

add_filter('woocommerce_product_add_to_cart_text', 'wc_product_add_to_cart_text', 10, 2 );
add_filter('woocommerce_product_single_add_to_cart_text', 'wc_product_add_to_cart_text', 10, 2 );

function wc_product_add_to_cart_text( $text, $product ){

    $product_cart_id = WC()->cart->generate_cart_id( $product->get_id() );
    $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

    if ( $in_cart ) {
        $text = "View Cart";
    }
    return $text;
}

Чтобы перенаправить в корзину, это сделает это.

add_action( 'wp_loaded', 'wc_add_to_cart_action', 19 );
function wc_add_to_cart_action(){
    if ( empty( $_REQUEST['add-to-cart'] ) || ! is_numeric( $_REQUEST['add-to-cart'] ) ) {
        return;
    }
    $product_id             = absint( $_REQUEST['add-to-cart'] );
    $adding_to_cart         = wc_get_product( $product_id );
    $product_cart_id        = WC()->cart->generate_cart_id( $product_id );
    $in_cart                = WC()->cart->find_product_in_cart( $product_cart_id );
    if ( $in_cart && $adding_to_cart->is_sold_individually() ) {
        wp_safe_redirect( wc_get_cart_url() );
        exit;
    }
}

или используйте это для второй части.

add_action( 'woocommerce_simple_add_to_cart', 'wc_simple_add_to_cart' );
function wc_simple_add_to_cart(){
    global $product;
    $product_cart_id = WC()->cart->generate_cart_id( $product->get_id() );
    $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

    if ( $in_cart ) {
        remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
        echo sprintf( '<form class="cart"><a href="%s" class="single_add_to_cart_button button alt">%s</a></form>', wc_get_cart_url(), __( 'View Cart', 'woocommerce' ) );
    }
}

обновление

для страницы магазина вам необходим этот код:

add_filter('woocommerce_product_add_to_cart_url', 'wc_product_add_to_cart_url', 10, 2 );
function wc_product_add_to_cart_url( $url, $product ){
    $product_cart_id = WC()->cart->generate_cart_id( $product->get_id() );
    $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

    if ( $in_cart && is_shop() ) {
        $url = wc_get_cart_url();
    }
    return $url;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...