Ausblenden der Schaltfläche „In den Warenkorb“ für angemeldete Benutzer in Woocommerce

Lesezeit: 3 Minuten

Benutzer-Avatar
Dr.MTR

Auf meiner Website (mit Woocommerce 3.2.6) möchte ich die Schaltfläche “In den Warenkorb” nur für angemeldete Benutzer ausblenden.

Ich habe diesen Code:

add_action('init', 'hide_price_add_cart_logged_in');
function hide_price_add_cart_logged_in() {
    if ( is_user_logged_in() ) {       
        remove_action( 'woocommerce_after_shop_loop_item', 
            'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 
            'woocommerce_template_single_add_to_cart', 30 );
    }
}

BEARBEITEN: Jemand hat mir vorgeschlagen, dies zu verwenden:

add_action('init', 'hide_price_add_cart_logged_in');
function hide_price_add_cart_logged_in() { 
    if ( is_user_logged_in() ) {       
        remove_action( 'woocommerce_after_shop_loop_item', 
            'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 
            'woocommerce_template_single_add_to_cart', 30 );
        return WooCommerce::instance();
    }
}

Aber das tat es nicht Arbeit…

Ich habe diesen Code in die Datei functions.php in meinem Design eingefügt, aber es scheint keine Änderung zu geben. Ich sehe immer noch die Schaltfläche „In den Einkaufswagen“, wenn ich ein Produkt ansehe.

Wie entferne ich diese Schaltfläche? Wo ist der Fehler in meiner Funktion?

Sie sollten stattdessen Folgendes versuchen:

add_action( 'woocommerce_after_shop_loop_item', 'remove_loop_add_to_cart_button', 1 );
function remove_loop_add_to_cart_button() {
    // Only for logged in users
    if( ! is_user_logged_in() ) return;

    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
}


add_action( 'woocommerce_single_product_summary', 'remove_add_to_cart_button', 1 );
function remove_add_to_cart_button() {
    // Only for logged in users
    if( ! is_user_logged_in() ) return;

    global $product;

    // For variable product types (keeping attribute select fields)
    if( $product->is_type( 'variable' ) ) {
        remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
    }
    // For all other product types
    else {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    }
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt.

Getestet und funktioniert


Anstatt die Schaltfläche „Zum Warenkorb hinzufügen“ auf Archivseiten (wie Shop) auszublenden, können Sie sie durch eine Schaltfläche ersetzen, die mit dem Produkt verknüpft ist. Der Code lautet also stattdessen:

// 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', 'replace_loop_add_to_cart_button', 10, 2 );
function replace_loop_add_to_cart_button( $button, $product  ) {
    // Only for logged in users
    if( ! is_user_logged_in() ) return;

    $button_text = __( "View product", "woocommerce" );
    $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';

    return $button;
}

add_action( 'woocommerce_single_product_summary', 'remove_add_to_cart_button', 1 );
function remove_add_to_cart_button() {
    // Only for logged in users
    if( ! is_user_logged_in() ) return;

    global $product;

    // For variable product types (keeping attribute select fields)
    if( $product->is_type( 'variable' ) ) {
        remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
    }
    // For all other product types
    else {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );;
    }
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt.

Getestet und funktioniert

1099020cookie-checkAusblenden der Schaltfläche „In den Warenkorb“ für angemeldete Benutzer in Woocommerce

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy