Kaip pakeisti meniu punkto pavadinimą?

Naudojuy WooCommerce įskiepį ir norėčiau automatiškai pakeisti navigacijos meniu punkto „My Accout“ pavadinimą, priklausomai nuo to ar lankytoas yra prisijungęs ar ne. Jei vartotojas prisijungęs, meniu punktas turėtų vadintis „My Account“, bet jei lankytojas dar neprisijungė, tas pats punktas turėtų vadintis „Login“. Žinau, kad yra tokia funkcija is_user_logged_in(), bet nežinau, kaip tiksliai ją reikėtų pritaikyti.

Quora

Jeigu reikia pakeisti tik meniu punkto pavadinimą, paprasčiausias būdas tai padaryti būtų the_title filtras. Tiesiog įdėkite žemiau pateiktą kodo gabalėlį į savo temos functions.php failą ir bet kurio meniu punkto pavadinto „[Dynamic title]“ (be kabučių) pavadinimas automatiškai keisis į „Login“ arba „My Account“, priklausomai nuo lankytojo statuso.

Šis filtras parašytas taip, kad veiktų tik lankytojo pusėje, bet ne valdymo panelėje – ten visuomet bus matomas „[Dynamic title]“. Funkciją galima patobulinti pridedant kitų raktažodžių, arba papildomos logikos – rodyti skirtingus pavadinimus priklausomai nuo lankytojo rolės ir pan.

PASTABA: Filtras the_title yra kiek per platus šiai konkrečiai užduočiai, nes jis taikomas ne tik meniu punktų, bet ir įrašų, puslapių, CPT įrašų antraštėms, taigi reikėtų raktažodžius nustatyti taip, kad nesikirstų su kitais pavadinimais. Dėl to šiame pavyzdyje naudojami laužtiniai skliaustai.


Jei keisti reikia ne tik meniu punkto pavadinimą, bet ir pačią nuorodą, aukščiau paminėtas sprendimas jums netiks. WordPress turi galimybę filtruoti ir viso meniu turinį, bet tai komplikuota procedūra. Šiuo konkrečiu atveju aš verčiau rekomenduočiau sukurti du skirtingus meniu – vieną prisijungusiam vartotojui, kitą – anonimui. Taip turėsite tikrai daug kontrolės, kokius meniu punktus kuriam vartotojui rodyti. Toje temos vietoje, kur rodomas meniu (paprastai – header.php failas) vietoj vienos wp_nav_menu() funkcijos reikėtų įterpti štai tokią struktūrą:

Atkreipkite dėmesį į skirtingas theme-location reikšmes – atitinkamai abu meniu turi būti užregistruoti functions.php faile, naudojant register_nav_menu() funkciją. Dažnai temos wp_nav_menu() prideda daug papildomų nustatymų, juos reikėtų nusikopijuoti ir pridėti, kad abu menu būtų vaizduojami taip, kaip suplanavo temos kūrėjai.