389 1671634     [javascript protected email address]

Rendere non cliccabile un elemento del menu di WordPress

Condividi questo post:

Nell’articolo precedente abbiamo visto come assegnare la classe “current” o “active” all’elemento selezionato in un menu tramite la funzione wp_nav_menu.

L’articolo è utile e si collega a questo in quanto contiene un esempio basilare di come è possibile inserire il codice del menu in una variabile per modificarne il contenuto html.

In questo nuovo articolo invece andiamo a scoprire una funzione di PHP davvero eccezionale, preg_replace, di non facile utilizzo, che ci consentirà di “convertire” qualsiasi elemento  configurato per non avere alcun link, in un elemento non-cliccabile, trasformandolo quindi da <a> a <p> o <span>.

Supponiamo quindi di avere un menu di questo tipo:

  • Servizi
  • – Manutenzione
  • – Assistenza

il codice sarà più o meno questo:

Come vedete tutti gli elementi sono dentro ad un tag <a>, ma noi vogliamo fare in modo che la voce principale “Servizi”, diventi un elemento che abbia la sola funzione di Titolo o di semplice testo, e che non abbia gli effetti css applicati agli altri link <a>.

Per ottenere questo risultato è necessario anzitutto modificare l’elemento “Servizi” all’interno del menu, andando a togliere qualsiasi link.


Lasciando il campo vuoto infatti, WordPress genererà quell’elemento senza nessun “href” all’interno, proprio come nell’esempio HTML sopra-riportato.
Potremmo così intercettare tutti gli elementi senza un link e convertirli in altri elementi, ad esempio:

<a>Servizi</a>

può diventare:

<p>Servizi</p>

Per farlo dobbiamo anzitutto inserire il nostro menu dentro a una variabile ed in seguito utilizzare la funzione preg_replace per fare la sostituzione.

Se prima ad esempio utilizzavate il classico:

wp_nav_menu(array ('theme_location'=> 'main-menu', + eventuali altri parametri originali);

Ora dovete fare in modo che tutto il codice del menu venga inserito in una variabile.

La prima riga inserisce il menu in una variabile, grazie al parametro ‘echo’ impostato su false.
La seconda riga fa una sostituzione di tutti i link <a> trasformandoli in <p>. Ovviamente ciò accade solo quando trova degli elementi <a> senza href, mentre tutte le altre voci rimangono invariate e cliccabili.

Se voleste un tag <span> al posto di <p>, vi basterà modificare l’argomento sostitutivo nel preg_replace, ad esempio:

Spero sia di aiuto a molti di quelli che sviluppano da sé i propri temi WordPress ma si scontrano spesso con la logica del CMS.

Discussione e Commenti

Post che potrebbero interessarti

Vuoi risolvere un problema? Chiamaci al 389 1671634
o mandaci una mail a [javascript protected email address]

Ti risponderò personalmente per qualsiasi necessità o emergenza, anche tramite un messaggio Whatsapp! Invia una mail