wp_ajax_dismiss_wp_pointer()
云策文档标注
概述
wp_ajax_dismiss_wp_pointer() 是一个 WordPress AJAX 处理函数,用于通过 AJAX 请求来关闭(dismiss)WordPress 指针(pointer)。它验证指针标识符,更新用户元数据以记录已关闭的指针,并返回适当的响应。
关键要点
- 函数通过 AJAX 处理 WordPress 指针的关闭操作,确保用户交互的异步性。
- 使用 sanitize_key() 验证指针标识符的安全性,防止恶意输入。
- 通过 get_user_meta() 和 update_user_meta() 管理用户元数据,存储已关闭指针的列表。
- 函数返回 0 或 1 作为响应,指示操作成功或失败。
- 自 WordPress 3.1.0 版本引入,是核心功能的一部分。
代码示例
function wp_ajax_dismiss_wp_pointer() {
$pointer = $_POST['pointer'];
if ( sanitize_key( $pointer ) !== $pointer ) {
wp_die( 0 );
}
// check_ajax_referer( 'dismiss-pointer_' . $pointer );
$dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) );
if ( in_array( $pointer, $dismissed, true ) ) {
wp_die( 0 );
}
$dismissed[] = $pointer;
$dismissed = implode( ',', $dismissed );
update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
wp_die( 1 );
}注意事项
- 函数依赖于 AJAX 请求,确保在 WordPress AJAX 上下文中调用。
- 注释掉的 check_ajax_referer() 行表明可能需要添加 nonce 验证以增强安全性。
- 指针标识符应使用 sanitize_key() 处理,以避免安全风险。
- 函数返回 0 表示失败(如无效指针或已关闭),1 表示成功关闭。
原文内容
Handles dismissing a WordPress pointer via AJAX.
Source
function wp_ajax_dismiss_wp_pointer() {
$pointer = $_POST['pointer'];
if ( sanitize_key( $pointer ) !== $pointer ) {
wp_die( 0 );
}
// check_ajax_referer( 'dismiss-pointer_' . $pointer );
$dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) );
if ( in_array( $pointer, $dismissed, true ) ) {
wp_die( 0 );
}
$dismissed[] = $pointer;
$dismissed = implode( ',', $dismissed );
update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed );
wp_die( 1 );
}
Changelog
| Version | Description |
|---|---|
| 3.1.0 | Introduced. |