Как устроено wp_nav_menu

Чтобы лучше понимать как работать с wp_nav_menu() разберемся немного как оно устроено.

Читайте также: wp_nav_menu().
Функции меню.

Taxonomy

Само меню - это таксономия (термин) типа nav_menu:

При этом в метаполях термина пусто:

$ wp term meta list 37
+---------+----------+------------+
| term_id | meta_key | meta_value |
+---------+----------+------------+
+---------+----------+------------+

Для получения такого объекта термина есть функция wp_get_nav_menu_object().

print_r( wp_get_nav_menu_object( 37 ) );

/*
WP_Term Object
(
	[term_id] => 37
	[name] => Футер
	[slug] => futer
	[term_group] => 0
	[term_taxonomy_id] => 37
	[taxonomy] => nav_menu
	[description] =>
	[parent] => 0
	[count] => 1
	[filter] => raw
)
*/

Post

Элементы меню это записи типа nav_menu_item.

Произвольная ссылка:

wp post get 44001
+-----------------------+------------------------+
| Field                 | Value                  |
+-----------------------+------------------------+
| ID                    | 44001                  |
| post_author           | 1                      |
| post_date             | 2022-08-27 10:39:24    |
| post_date_gmt         | 2022-06-12 11:27:02    |
| post_content          |                        |
| post_title            | Паблик в телеграм      |
| post_excerpt          |                        |
| post_status           | publish                |
| comment_status        | closed                 |
| ping_status           | closed                 |
| post_password         |                        |
| post_name             | pablik-v-telegram      |
| to_ping               |                        |
| pinged                |                        |
| post_modified         | 2022-08-27 10:39:24    |
| post_modified_gmt     | 2022-08-27 07:39:24    |
| post_content_filtered |                        |
| post_parent           | 0                      |
| guid                  | /pablik-v-telegram/    |
| menu_order            | 1                      |
| post_type             | nav_menu_item          |
| post_mime_type        |                        |
| comment_count         | 0                      |
+-----------------------+------------------------+

$ wp post meta list 44001
+---------+-----------------------------+----------------------+
| post_id | meta_key                    | meta_value           |
+---------+-----------------------------+----------------------+
| 44001   | _menu_item_type             | custom               |
| 44001   | _menu_item_menu_item_parent | 0                    |
| 44001   | _menu_item_object_id        | 44001                |
| 44001   | _menu_item_object           | custom               |
| 44001   | _menu_item_target           |                      |
| 44001   | _menu_item_classes          | a:1:{i:0;s:0:"";}    |
| 44001   | _menu_item_xfn              |                      |
| 44001   | _menu_item_url              | https://t.me/JUXIeQo |
| 44001   | _wp_old_date                | 2022-06-12           |
+---------+-----------------------------+----------------------+

Ссылка созданная из страницы/поста ВП:

$ wp post get 10253
+-----------------------+----------------------+
| Field                 | Value                |
+-----------------------+----------------------+
| ID                    | 10253                |
| post_author           | 1                    |
| post_date             | 2022-08-27 10:39:24  |
| post_date_gmt         | 2019-11-25 11:34:57  |
| post_content          |                      |
| post_title            | Обратная связь       |
| post_excerpt          |                      |
| post_status           | publish              |
| comment_status        | closed               |
| ping_status           | closed               |
| post_password         |                      |
| post_name             | obratnaya-svyaz      |
| to_ping               |                      |
| pinged                |                      |
| post_modified         | 2022-08-27 10:39:24  |
| post_modified_gmt     | 2022-08-27 07:39:24  |
| post_content_filtered |                      |
| post_parent           | 0                    |
| guid                  | /obratnaya-svyaz/    |
| menu_order            | 3                    |
| post_type             | nav_menu_item        |
| post_mime_type        |                      |
| comment_count         | 0                    |
+-----------------------+----------------------+

$ wp post meta list 10253
+---------+-----------------------------+-------------------+
| post_id | meta_key                    | meta_value        |
+---------+-----------------------------+-------------------+
| 10253   | _menu_item_type             | post_type         |
| 10253   | _menu_item_menu_item_parent | 0                 |
| 10253   | _menu_item_object_id        | 1667              |
| 10253   | _menu_item_object           | page              |
| 10253   | _menu_item_target           |                   |
| 10253   | _menu_item_classes          | a:1:{i:0;s:0:"";} |
| 10253   | _menu_item_xfn              |                   |
| 10253   | _menu_item_url              |                   |
| 10253   | _wp_old_date                | 2019-11-25        |
| 10253   | _wp_old_date                | 2022-06-07        |
+---------+-----------------------------+-------------------+

Сыылка созданная из термина:

$ wp post get 10259
+-----------------------+--------------------------------------------------------------+
| Field                 | Value                                                        |
+-----------------------+--------------------------------------------------------------+
| ID                    | 10259                                                        |
| post_author           | 1                                                            |
| post_date             | 2019-11-25 14:44:24                                          |
| post_date_gmt         | 2019-11-25 11:44:24                                          |
| post_content          | Публикуем всегда свежие и последние обзоры рынка на сегодня. |
| post_title            | Аналитика                                                    |
| post_excerpt          |                                                              |
| post_status           | publish                                                      |
| comment_status        | closed                                                       |
| ping_status           | closed                                                       |
| post_password         |                                                              |
| post_name             | analitika                                                    |
| to_ping               |                                                              |
| pinged                |                                                              |
| post_modified         | 2019-11-25 14:44:24                                          |
| post_modified_gmt     | 2019-11-25 11:44:24                                          |
| post_content_filtered |                                                              |
| post_parent           | 0                                                            |
| guid                  | https://holder.loc/?p=10259                                  |
| menu_order            | 1                                                            |
| post_type             | nav_menu_item                                                |
| post_mime_type        |                                                              |
| comment_count         | 0                                                            |
+-----------------------+--------------------------------------------------------------+

$ wp post meta list 10259
+---------+-----------------------------+-------------------+
| post_id | meta_key                    | meta_value        |
+---------+-----------------------------+-------------------+
| 10259   | _menu_item_type             | taxonomy          |
| 10259   | _menu_item_menu_item_parent | 0                 |
| 10259   | _menu_item_object_id        | 4                 |
| 10259   | _menu_item_object           | category          |
| 10259   | _menu_item_target           |                   |
| 10259   | _menu_item_classes          | a:1:{i:0;s:0:"";} |
| 10259   | _menu_item_xfn              |                   |
| 10259   | _menu_item_url              |                   |
+---------+-----------------------------+-------------------+

Элемент WP_Post в wp_nav_menu():

Следующие элементы возвращает функция wp_get_nav_menu_items():

array(

	WP_Post Object (
		[ID]                    => 10
		[post_author]           => 5
		[post_date]             => 2019-02-11 13:33:39
		[post_date_gmt]         => 2019-02-11 13:33:39
		[post_content]          =>
		[post_title]            => New
		[post_excerpt]          =>
		[post_status]           => publish
		[comment_status]        => closed
		[ping_status]           => closed
		[post_password]         =>
		[post_name]             => new
		[to_ping]               =>
		[pinged]                =>
		[post_modified]         => 2019-02-11 23:10:19
		[post_modified_gmt]     => 2019-02-11 23:10:19
		[post_content_filtered] =>
		[post_parent]           => 0
		[guid]                  => http://dh5.com/?p=10
		[menu_order]            => 1
		[post_type]             => nav_menu_item
		[post_mime_type]        =>
		[comment_count]         => 0
		[filter]                => raw
		[db_id]                 => 10
		[menu_item_parent]      => 0
		[object_id]             => 10
		[object]                => custom
		[type]                  => custom
		[type_label]            => Custom Link
		[title]                 => New
		[url]                   => #
		[target]                =>
		[attr_title]            =>
		[description]           =>
		[classes]               => Array
			[0] => extra-sub-menu
			[1] => menu-item
			[2] => menu-item-type-custom
			[3] => menu-item-object-custom
		[xfn]                   =>
		[current]               =>
		[current_item_ancestor] =>
		[current_item_parent]   =>
	)

	WP_Post Object (...)

	...
)