2014-10-03 11 views
6

Sto cercando di uscire da un menu wp senza ul e li e ho aggiunto una classe all'elemento.Come aggiungere una classe al link in wp_nav_menu?

Ho provato ad aggiungere questo nel mio function.php

function add_menuclass($ulclass) { 
    return preg_replace('/<a /', '<a class="list-group-item"', $ulclass, 1); 
} 
add_filter('wp_nav_menu','add_menuclass'); 

E nel mio modello ho:

<?php 
$menuParameters = array(
    'menu' => 'Videos', 
    'container'  => false, 
    'echo'   => false, 
    'items_wrap'  => '%3$s', 
    'depth'   => 0, 
); 

    echo strip_tags(wp_nav_menu($menuParameters), '<a>'); 
?> 

Ma l'uscita si applica solo la classe per il primo oggetto e non tutte la s come previsto.

<div class="list-group"> 
    <a class="list-group-item" href="#">First item</a> 
    <a href="#">Second item</a> 
</div> 

Sto cercando di raggiungere questo obiettivo, in sostanza di applicare quella classe a tutti i miei articoli (non so perché si applica a un solo) - No jQuery per favore.

<div class="list-group"> 
    <a class="list-group-item" href="#">First item</a> 
    <a class="list-group-item" href="#">Second item</a> 
</div> 
+0

http://php.net/manual/en/function.preg-replace.php - quarto parametro, '$ limite'. Stai impostandolo su '1'. Leggi i documenti. Molto molto chiaro _why_ questo sta accadendo quando lo chiedi esplicitamente di lavorare in questo modo. –

+0

Per chiarire, si desidera aggiungere una classe aggiuntiva a ciascun all'interno del menu? –

+0

@rob_was_taken sì esattamente –

risposta

6

Grazie alla Sergiu Paraschiv commentare la questione è stata nei riguardi di limitare a 1.

Pertanto, deve essere in function.php:

function add_menuclass($ulclass) { 
    return preg_replace('/<a /', '<a class="list-group-item"', $ulclass); 
} 
add_filter('wp_nav_menu','add_menuclass'); 

UPDATE

See anche this answer per una soluzione più specifica.

+2

Grazie per l'aggiornamento con la tua risposta. –

Problemi correlati