функция
since 3.0.0
_wp_auto_add_pages_to_menu()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
_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
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. |

