Einen bestimmten String in allen Menuobjekten ersetzen

  • Hi,

    ich habe ein ziemlich großes Problem.

    Ich habe einige templates in meinem theme, die auf eine url wie diese hier verweisen:

    /autoren/NAMEDESBENUTZERS/profil.php

    Ich möche nun Menü-Elemente via Link unter Design-Menüs erstellen, die auf solche Seiten verweisen, also in diesem Fall auf die Profilseite des gerade angemeldeten Benuzers.

    Ich suche also nach einer Funktion, die einen beliebigen String in beliebigen Menüobjekte, beispielsweise --username-- gegen den user_login des gerade aktuellen Benutzers austauscht. Nicht nur im Titel des Menüelements, sondern auch in der Beschreibung und der URL - und zwar völlig gleich, ob es ein Top-Level Element ist oder ein Untermenü-Element.

    Eine Idee, die ich zusammen mit einem Entwickler hatte, der sich deutlich besser auskennt als ich, war:

    HTML
    function filter_function_name( $object = "" ) {
        if ( !exist( $object->url ) ) {
            return $object;
        }
        $user = wp_get_current_user();
        $newlink = str_replace( "--username--", $user->user_login, $object->url );
        $object->url = $newlink;
        return $object;
    }
    add_filter( 'wp_nav_menu_objects', 'filter_function_name' );

    Leider scheitert diese Idee wohl daran, dass wp_nav_menu_objekt nur Objekte wiedergibt, die wp_nav_menu Argumente enhalten. und "url" gehört leider nicht dazu.

    Mein Problem ist, dass meine User an die wichtigsten Seite nun nicht mehr herankommen, was wirklich fatal ist.
    Hoffentlich kann mir jemand helfen.

    Danke im Voraus
    Digi

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!