Meniu de navigare personalizat este creat cu pagini implicite, dar nu este conectat la locația de meniu personalizat a temei
7 apr. 2011, 00:06:56
Vizualizări: 1.65K
Voturi: 0
Scriptul de mai jos creează un meniu de navigare și atribuie o pagină acestuia. Totul funcționează perfect, cu excepția faptului că meniul de navigare nu este asignat automat la locația "Header-menu" din tema mea.
Idei de ce se întâmplă acest lucru?
//Înregistrează locațiile de meniu pentru temă
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
register_nav_menus(
array('header-menu' => __( 'Meniu Header' ), 'footer-menu' => __( 'Meniu Footer' ))
);
}
//Creează un meniu de navigare, adaugă o pagină și îl atribuie la locația "header-menu" din temă.
$menu_id = wp_create_nav_menu( 'header-menu' );
$menu = array(
'menu-item-type' => 'custom',
'menu-item-url' => get_home_url('/'),
'menu-item-title' => 'Acasă',
'menu-item-status' => 'publish',
'theme_location' => 'header-menu', //Doar o presupunere dar nu a funcționat!!!
);
wp_update_nav_menu_item( $menu_id, 0, $menu );

Scott B
5.7K
Toate răspunsurile la întrebare
1
2
Funcția wp_create_nav_menu()
acceptă numele meniului și nu locația meniului.
În ceea ce privește wp_update_menu_item()
, aceasta este pentru elementele meniului și nu pentru meniul în sine.
După ce am căutat în cod, am descoperit că "atribuirea" unei 'locații de temă' la un meniu nu se face folosind API-ul nav_menu în WordPress, ci cu opțiunile temei, deci:
//mai întâi obține tema curentă
$theme = get_current_theme();
//obține modificările temei
$mods = get_option("mods_$theme");
//actualizează modificările cu ID-ul meniului la locația temei
$mods['nav_menu_locations']['header-menu'] = $menu_id;
update_option("mods_$theme", $mods);
Sper că acest lucru vă ajută :)

Bainternet
67.7K
7 apr. 2011 02:48:25
Comentarii
Ești un superstar. Nu mă mir că nu l-am găsit. Dacă aș avea un buton +20, l-aș apăsa cu putere.

7 apr. 2011 03:56:00
Întrebări similare
2
răspunsuri
1
răspunsuri