# _wp_auto_add_pages_to_menu()

URL: https://chugunov.pro/api-wordpress/functions/_wp_auto_add_pages_to_menu/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 3.0.0.

## Сигнатура

```php
_wp_auto_add_pages_to_menu( string $new_status, string $old_status, WP_Post $post )
```

## Описание

Автоматически добавляет только что опубликованные объекты страниц в меню, для которых включена такая опция.

## Параметры

- `$new_status` `string` — обязательный. Новый статус объекта записи.
- `$old_status` `string` — обязательный. Прежний статус объекта записи.
- `$post` `WP_Post` — обязательный. Объект записи, переходящий из одного статуса в другой.

## Исходный код

Файл: `wp-includes/nav-menu.php:1137`

```php
function _wp_auto_add_pages_to_menu( $new_status, $old_status, $post ) {
	if ( 'publish' !== $new_status || 'publish' === $old_status || 'page' !== $post->post_type ) {
		return;
	}
	if ( ! empty( $post->post_parent ) ) {
		return;
	}
	$auto_add = get_option( 'nav_menu_options' );
	if ( empty( $auto_add ) || ! is_array( $auto_add ) || ! isset( $auto_add['auto_add'] ) ) {
		return;
	}
	$auto_add = $auto_add['auto_add'];
	if ( empty( $auto_add ) || ! is_array( $auto_add ) ) {
		return;
	}

	$args = array(
		'menu-item-object-id' => $post->ID,
		'menu-item-object'    => $post->post_type,
		'menu-item-type'      => 'post_type',
		'menu-item-status'    => 'publish',
	);

	foreach ( $auto_add as $menu_id ) {
		$items = wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) );
		if ( ! is_array( $items ) ) {
			continue;
		}
		foreach ( $items as $item ) {
			if ( $post->ID === (int) $item->object_id ) {
				continue 2;
			}
		}
		wp_update_nav_menu_item( $menu_id, 0, $args );
	}
}
```

## История изменений

- 3.0.0 — Introduced.

## Связанные

Использует: [`wp_get_nav_menu_items`](https://chugunov.pro/api-wordpress/functions/wp_get_nav_menu_items/), [`wp_update_nav_menu_item`](https://chugunov.pro/api-wordpress/functions/wp_update_nav_menu_item/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/_wp_auto_add_pages_to_menu/
