函数文档

wp_ajax_menu_locations_save()

💡 云策文档标注

概述

wp_ajax_menu_locations_save() 是一个 WordPress AJAX 处理函数,用于保存菜单位置设置。它通过权限验证、安全检查后,更新主题的导航菜单位置。

关键要点

  • 函数用于处理 AJAX 请求,保存菜单位置到主题修改设置中。
  • 需要当前用户具有 'edit_theme_options' 权限才能执行。
  • 使用 check_ajax_referer() 验证 AJAX 请求的 nonce,防止外部请求。
  • 如果未提供 'menu-locations' 数据,函数会终止执行。
  • 使用 set_theme_mod() 将菜单位置数据转换为整数后保存。
  • 函数通过 wp_die() 返回状态码(-1、0 或 1)来指示操作结果。

代码示例

function wp_ajax_menu_locations_save() {
    if ( ! current_user_can( 'edit_theme_options' ) ) {
        wp_die( -1 );
    }

    check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );

    if ( ! isset( $_POST['menu-locations'] ) ) {
        wp_die( 0 );
    }

    set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
    wp_die( 1 );
}

注意事项

  • 此函数自 WordPress 3.1.0 版本引入。
  • 相关函数包括 set_theme_mod()、current_user_can()、check_ajax_referer() 和 wp_die(),用于主题修改、权限检查、AJAX 安全和错误处理。

📄 原文内容

Handles saving menu locations via AJAX.

Source

function wp_ajax_menu_locations_save() {
	if ( ! current_user_can( 'edit_theme_options' ) ) {
		wp_die( -1 );
	}

	check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );

	if ( ! isset( $_POST['menu-locations'] ) ) {
		wp_die( 0 );
	}

	set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
	wp_die( 1 );
}

Changelog

Version Description
3.1.0 Introduced.