Come assegnare un menu personalizzato di WP 3.0 alla posizione di navigazione del tema tramite script?

5 apr 2011, 17:08:19
Visualizzazioni: 442
Voti: 2

Sto utilizzando questo script all'interno di un plugin per creare un nuovo menu personalizzato al volo e assegnargli una pagina...

$menu_id = wp_create_nav_menu( 'header-menu' );
$menu = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'),'menu-item-title' => 'Home', 'menu-item-status' => 'publish' );
wp_update_nav_menu_item( $menu_id, 0, $menu );

E questo funziona perfettamente. Tuttavia, quello su cui sono bloccato è come collegare questo menu a una delle "Posizioni Menu" del mio tema. Poiché sto registrando una posizione di navigazione chiamata "header-menu" nel functions.php del mio tema, pensavo che il codice sopra, chiamando wp_create_nav_menu( 'header-menu' ) avrebbe collegato il mio menu personalizzato alla posizione definita nel mio tema come "header-menu", ma non è così.

Ad esempio, il mio tema registra due posizioni menu...

register_nav_menus(
  array('header-menu' => __( 'Il Mio Menu Header' ), 
 'footer-menu' => __( 'Menu Footer' ))
);

Come posso collegare il "Header Menu" che ho creato con wp_create_nav_menu( 'Header Menu' ) alla posizione "Il Mio Menu Header" che ho registrato nel mio tema? Sono sicuro che la risposta sia da qualche parte in nav-menu.php, ma non riesco a trovarla.

Ad esempio, posso farlo manualmente dal gestore "Aspetto > Menu" di WordPress e sotto "Posizioni tema > Menu di Navigazione Principale" seleziono "Header Menu" e clicco "Salva". Sto cercando di farlo tramite script.

0
Tutte le risposte alla domanda 1
0

Se hai già trovato una soluzione che funziona bene per te, ti incoraggio a condividerla qui per aiutare gli altri. In caso contrario, il modo in cui procederei sarebbe quello di utilizzare un filtro personalizzato o un'azione.

Dove il menu viene visualizzato nel tema, puoi usare apply_filters oppure do_action per attivare l'override che desideri, e nel tuo plugin, agganciarti a quell'azione/filtro per generare l'override. Questo è un approccio meno distruttivo per ottenere lo stesso risultato, poiché così non sovrascrivi l'associazione del menu.

13 feb 2012 09:01:01