钩子文档

rest_insert_nav_menu_item

💡 云策文档标注

概述

rest_insert_nav_menu_item 是一个 WordPress REST API 钩子,在通过 REST API 创建或更新单个菜单项后触发。它允许开发者在菜单项操作完成后执行自定义代码。

关键要点

  • 触发时机:在通过 REST API 成功创建或更新单个菜单项后立即执行。
  • 参数:接收三个参数:$nav_menu_item(插入或更新的菜单项对象)、$request(WP_REST_Request 请求对象)和 $creating(布尔值,创建时为 true,更新时为 false)。
  • 用途:常用于扩展菜单项功能,如添加自定义元数据、日志记录或触发其他操作。
  • 相关函数:与 WP_REST_Menu_Items_Controller 的 create_item() 和 update_item() 方法关联。
  • 版本:从 WordPress 5.9.0 版本开始引入。

代码示例

add_action( 'rest_insert_nav_menu_item', 'my_custom_nav_menu_item_action', 10, 3 );
function my_custom_nav_menu_item_action( $nav_menu_item, $request, $creating ) {
    // 检查是否为创建操作
    if ( $creating ) {
        // 执行创建后的自定义逻辑,例如记录日志
        error_log( 'Menu item created: ' . $nav_menu_item->title );
    } else {
        // 执行更新后的自定义逻辑,例如更新相关缓存
        wp_cache_delete( 'nav_menu_' . $nav_menu_item->ID, 'menu' );
    }
}

注意事项

  • 此钩子仅在通过 REST API 操作时触发,不适用于 WordPress 管理界面中的菜单项编辑。
  • 参数 $creating 可用于区分创建和更新操作,便于针对不同场景编写逻辑。
  • 确保回调函数高效执行,避免影响 REST API 响应性能。

📄 原文内容

Fires after a single menu item is created or updated via the REST API.

Parameters

$nav_menu_itemobject
Inserted or updated menu item object.
$requestWP_REST_Request
Request object.
$creatingbool
True when creating a menu item, false when updating.

Source

do_action( 'rest_insert_nav_menu_item', $nav_menu_item, $request, true );

Changelog

Version Description
5.9.0 Introduced.