web-dev-qa-db-fra.com

Comment ajouter des menus personnalisés à la volée

doublon possible:
Puis-je ajouter des pages à mon menu personnalisé via un script?

Mon thème a un menu personnalisé appelé "Menu d'en-tête personnalisé" et j'ai un plugin qui définit les paramètres par défaut du site et crée les pages statiques que je souhaite personnaliser afin de créer des menus et des pages à la volée dans le menu personnalisé. .

J'aimerais donc ajouter du code au plugin pour que chacune des pages que je crée soit ajoutée/assignée au menu personnalisé.

Je cherche simplement un point de référence sur la manière d'ajouter des pages à un menu personnalisé à la volée via un script ...

De wp-includes/nav-menu.php, je compte utiliser ceci ...

wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item_data = array() )

Où $ menu_id est l'id de mon "menu d'en-tête personnalisé" et $ menu_item_data est un tableau des pages que j'attribue au menu.

1
Scott B

Je suppose qu'il n'a plus besoin d'explication:

$mymenu = wp_get_nav_menu_object('Main Navigation Menu');
$menuID = (int) $mymenu->term_id;
$myPage = get_page_by_title('About Us');

$itemData =  array(
    'menu-item-object-id' => $myPage->ID,
    'menu-item-parent-id' => 0,
    'menu-item-position'  => 2,
    'menu-item-object' => 'page',
    'menu-item-type'      => 'post_type',
    'menu-item-status'    => 'publish'
  );

wp_update_nav_menu_item($menuID, 0, $itemData);
4
kaiser

Pouvez-vous poster le nom de votre plugin? Peut-être que quelqu'un a déjà une solution à cette question spécifique.

Je ne peux pas vous donner une solution. N'ayant pas beaucoup joué avec la "nouvelle" fonctionnalité wp-navmenu, je ne peux que faire quelques suggestions:

  1. Recherchez dans votre plugin la fonction/méthode qui crée une nouvelle publication dans la table WordPress.
  2. Renvoie l'id de la publication créée (wp_insert_post (), wp_update_post () le renvoie par défaut).
  3. Ajoutez le message avec l'id donné au menu:
    • Avec une publication dans la table wp_posts - Les éléments de menu wp-nav-nav sont des publications simples avec le type de publication "wp-nav-item". Vous devez également ajouter les bons termes et établir la relation dans la table wp_term_relationships.
    • Avec un crochet de filtre, par ex. 'wp_get_nav_menu_items'. Regardez le fichier "nav-menu.php" dans le répertoire wp-includes. Sur la ligne 525, vous pouvez voir le hook de filtrage attribué dans la fonction "wp_get_nav_menu_items". Cette méthode ne serait pas paramétrée, ce qui signifie que vous ne pouvez pas éditer les articles/pages de la section "Menu" de votre panneau d'administration. L’option N ° 1 est donc probablement la solution à votre problème.
1
rofflox