Ändern Sie den Wortlaut des Kontomenüs, wenn der Benutzer in WooCommerce „eingeloggt“ ist

Lesezeit: 2 Minuten

Benutzeravatar von Louis
Ludwig

Ich verwende WooCommerce mit einem Child-Theme von Storefront.

Ich habe ein sekundäres Menü mit dem Namen “Desktop sekundäres oberes Recht EN”, in dem es einen Link zu “Mein Konto” gibt.

Meine Frage ist: Wie ändere ich den Artikelwortlaut “Mein Konto”, wenn der Kunde angemeldet ist?

Ich möchte dies tun, ohne ein weiteres Menü im Backoffice erstellen zu müssen und natürlich ohne ein Plugin zu installieren.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ich sollte in der Lage sein, etwas Ähnliches zu verwenden:

function menu_add_admin_buttons( $items, $args ) {
  if( 'secondary' == $args['theme_location'] ) {
    $btn_format="<li><a href="%s">%s</a></li>";
        if ( is_user_logged_in() ) {
            $btn = sprintf($btn_format, admin_url('profile.php'), __('Your Profile') );
        } else {
            $btn = sprintf($btn_format, wp_login_url(), __('Log In') );
        }
        return $items . $btn;
    }
}
$menu_filter="wp_nav_menu_" . sanitize_title("Desktop secondary top right EN") . '_items';
add_filter($menu_filter, 'menu_add_admin_buttons', 20, 2);

aber es muss auf meine Bedürfnisse angepasst werden. Wie kann ich das machen?

Sie können einen anderen WordPress-Hook ausprobieren wp_nav_menu_items:

function menu_add_admin_buttons( $items, $args ) {
    $btn = '';

    if ( $args->theme_location === 'secondary' ) {
        $btn_format="<li><a href="%s">%s</a></li>";
        if ( is_user_logged_in() ) {
            $btn = sprintf($btn_format, admin_url( 'profile.php' ), __( 'Your Profile' ) );
        } else {
            $btn = sprintf($btn_format, wp_login_url(), __('Log In') );
        }
    }

    return sprintf( '%s%s', $items, $btn );
}
add_filter( 'wp_nav_menu_items','menu_add_admin_buttons', 10, 2 );

Könnten Sie das bitte überprüfen Dokumentation.

Benutzeravatar von Louis
Ludwig

Ich habe dies stattdessen getan, und es scheint gut zu funktionieren. Ich verwende den Standard-Hook: wp_setup_nav_menu_item um die Menüpunkte zu filtern. Ich überprüfe, ob es nicht das Backoffice (Admin-Modus) ist und ob Woocommerce aktiv ist. Wenn die URL dann die URL des Menüs “Mein Konto” ist, nehme ich die Änderung entsprechend der aktuellen Sprache vor.

add_filter( 'wp_setup_nav_menu_item','my_account_setup' );
function my_account_setup( $item ) {
    if ( ! is_admin() && class_exists( 'woocommerce' ) ) {
        if ( $item->url == esc_url( wp_login_url() ) || strpos($item->url, '/my-account-2-2/') !== false ){
            if ( is_user_logged_in() ) {
                if(get_locale() == 'fr_FR') {
                    $item->title="MON COMPTE";
                } else {
                    $item->title="MY ACCOUNT";
                }
            } else {
                if(get_locale() == 'fr_FR') {
                    $item->title="LOGIN";
                } else {
                    $item->title="LOGIN";
                }
            }
        }
    }
    return $item;
}

  • Ich habe gerade Kommentare hinzugefügt. Vielen Dank.

    – Ludwig

    6. Juli 2020 um 7:54 Uhr

  • Dies ist eine extrem schlechte Code-Praxis, während dieses spezielle Beispiel Ihre Anforderungen erfüllt, sollten Sie im Allgemeinen Ihre eigene Textdomäne und Ihr eigenes Theme/Child-Theme und WP verwenden Lokalisierungsfunktionen dafür.

    – Iwan Schatsky

    8. Juli 2020 um 4:47 Uhr

1428800cookie-checkÄndern Sie den Wortlaut des Kontomenüs, wenn der Benutzer in WooCommerce „eingeloggt“ ist

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

Privacy policy