函数文档

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.