Entfernen Sie die Schaltfläche „Zum Warenkorb hinzufügen“ für eine bestimmte Benutzerrolle in WooCommerce

Lesezeit: 3 Minuten

Benutzer-Avatar
Lukas Vidigal

In meinem virtuellen Geschäft, das das Divi-Thema zusammen mit WooCommerce verwendet, habe ich die beiden Benutzergruppen: Endbenutzer und meine Wiederverkäufer, im Fall meines Endkunden müsste nur die Schaltfläche „Kaufen“ erscheinen. Bereits für meine Wiederverkäufer nur die Schaltfläche „Zur Bestellung hinzufügen“ (bereitgestellt vom YITH Request A Quote-Plugin). Falls Zweifel bestehen, wie die Schaltfläche „In den Warenkorb“ für die Reseller-Konten entfernt werden kann, weiß ich, dass ich den Code verwende:

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', 30 );

Ich entferne die Schaltfläche von der gesamten Website, aber ich versuche, eine Art von zu verwenden if nur eine Gruppe definieren zu können. Etwas wie das:

$user = wp_get_current_user();
if ( in_array( 'Revenda', (array) $user->roles ) ) {
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', 30 );
}

oder dieses:

if( current_user_can('revenda') ) {
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', 30 );
}

Ich versuche auch diesen Code:

function user_filter_addtocart_for_shop_page(){
    $user_role = get_user_role();
    $role_id = get_role('Revenda');
    if($user_role == $role_id){
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    }
}

Woher wird get_user_role angezeigt:

function get_user_role() {
    global $current_user;

    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);

    return $user_role;
}

Wie kann ich das erreichen?

Vielen Dank

Benutzer-Avatar
LoicTheAztec

Der richtige Code, um das zu tun, was Sie tun möchten (Der Benutzerrollen-Slug ist in Kleinbuchstaben und ich verwende get_userdata(get_current_user_id()) um die Benutzerdaten zu erhalten.

Deshalb habe ich deinen Code ein wenig geändert:

function remove_add_to_cart_for_user_role(){
    // Set Here the user role slug
    $targeted_user_role="revenda"; // The slug in "lowercase"
    $user_data = get_userdata(get_current_user_id());
    if ( in_array( $targeted_user_role, $user_data->roles ) ) {
        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 );
    }
}
add_action('init', 'remove_add_to_cart_for_user_role');

Ich habe den Code in eine Funktion eingebettet, die ausgelöst wird init Haken.

Dieser Code ist getestet und voll funktionsfähig.

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder Designs) eingefügt. Oder auch in irgendwelchen Plugin-PHP-Dateien.

  • Es scheint in Woo 2021 nicht zu funktionieren. Ich habe es mit einer benutzerdefinierten URL-Schaltfläche IN DEN WARENKORB getestet wie: example.com/cart/?add-to-cart=179602. Falls Sie diese Funktion zum Laufen bringen können, fügen Sie bitte eine benutzerdefinierte Nachricht für eingeschränkte Benutzerrollen in ADD TO CART hinzu, z. B.: “Ihre Benutzerrolle kann keine Artikel kaufen.” Danke im Voraus!

    – Marius

    30. Juli 2021 um 4:29 Uhr

1370250cookie-checkEntfernen Sie die Schaltfläche „Zum Warenkorb hinzufügen“ für eine bestimmte Benutzerrolle in WooCommerce

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

Privacy policy