Доброго вам дня.
Нещодавно в одному невеликому проекті на WordPress мені знадобилося динамічно змінювати пункти меню.
Трохи погуглити я не отримав того варіанту, на який розраховував - все варіант були або дико незручні, або губився потрібний функціонал, а головне - можливість все так-же редагувати меню з адмін-панелі.
Варто відзначити, що з WP я працюю
2 місяці, деяких аспектів, я звичайно ж, ще не знаю, але гугленіямі я прийшов до функції wp_update_nav_menu_item (). якої, чомусь, не виявилося в документації, але вона виявилася як-раз тим, що потрібно.
Функція розташована в /wp-includes/nav-menu.php і приймає 3 параметра - $ menu_id. $ Menu_item_db_id і $ menu_item_data.
Давайте розглянемо кожен параметр по-окремо:
$ Menu_id - integer - ідентифікатор меню. Коли ви створюєте нове меню (точніше сказати реєструєте) в своєму functions.php, то кожному меню присвоюється ідентифікатор.
$ Menu_item_db_id - integer - коли ви створюєте елементи меню, то кожному присвоюється ідентифікатор і ідентифікатор в базі даних (зазвичай вони збігаються). Якщо цей параметр встановити 0, то функція создат новий елемент, а не оновить существющій.
$ Menu_item_data - array - масив даних для елемента, який ви збираєтеся оновити або створити.
Вомзожние параметри:
- menu-item-db-id
- menu-item-object-id
- menu-item-object
- menu-item-parent-id
- menu-item-position
- menu-item-type
- menu-item-title
- menu-item-url
- menu-item-description
- menu-item-attr-title
- menu-item-target
- menu-item-classes
- menu-item-xfn
- menu-item-status
Думаю, з назв, зрозуміло який за що відповідає.
Після виконання функція повертає false у разі невдачі, або int з ID елемента меню (?) Якщо все пройшло успішно.
Далі справа за малим - ставимо стрілялки на цю функцію і після того, як в який-небудь з дочірніх рубрик з'явиться хоча-б один пост, вона буде автоматично додана в меню, АЛЕ, відразу там не з'явиться. Це виявилося для мене приємний плюсом. За замовчуванням адміністратору потрібно буде підтвердити наявність цього елемента в меню, після чого воно буде прийнято до загального списку.
Дякуємо за увагу.
Можливо для людей, які давно працюють з WP я не показав нічого нового, але для новачків, як я, це буде корисно знати.