函数文档

heartbeat_autosave()

💡 云策文档标注

概述

heartbeat_autosave() 是一个 WordPress 函数,用于通过 Heartbeat API 执行自动保存操作。它处理来自 $_POST 的数据,调用 wp_autosave() 保存草稿,并根据保存结果更新 Heartbeat 响应数组。

关键要点

  • 函数名称:heartbeat_autosave()
  • 参数:$response(Heartbeat 响应数组,必需),$data($_POST 数据数组,必需)
  • 返回值:更新后的 Heartbeat 响应数组
  • 功能:检查 $data 中是否存在 'wp_autosave' 键,若存在则调用 wp_autosave() 进行保存,并根据保存成功或失败设置响应消息
  • 错误处理:使用 is_wp_error() 检查错误,并返回相应的错误信息
  • 成功响应:包含成功状态和本地化的保存时间消息

代码示例

function heartbeat_autosave( $response, $data ) {
    if ( ! empty( $data['wp_autosave'] ) ) {
        $saved = wp_autosave( $data['wp_autosave'] );

        if ( is_wp_error( $saved ) ) {
            $response['wp_autosave'] = array(
                'success' => false,
                'message' => $saved->get_error_message(),
            );
        } elseif ( empty( $saved ) ) {
            $response['wp_autosave'] = array(
                'success' => false,
                'message' => __( 'Error while saving.' ),
            );
        } else {
            /* translators: Draft saved date format, see https://www.php.net/manual/datetime.format.php */
            $draft_saved_date_format = __( 'g:i:s a' );
            $response['wp_autosave'] = array(
                'success' => true,
                /* translators: %s: Date and time. */
                'message' => sprintf( __( 'Draft saved at %s.' ), date_i18n( $draft_saved_date_format ) ),
            );
        }
    }

    return $response;
}

注意事项

  • 此函数依赖于 Heartbeat API,通常用于后台自动保存功能
  • 需要确保 $data 参数包含正确的 'wp_autosave' 数据,否则不会执行保存操作
  • 返回的响应数组用于更新前端界面,显示保存状态
  • 函数自 WordPress 3.9.0 版本引入

📄 原文内容

Performs autosave with heartbeat.

Parameters

$responsearrayrequired
The Heartbeat response.
$dataarrayrequired
The $_POST data sent.

Return

array The Heartbeat response.

Source

function heartbeat_autosave( $response, $data ) {
	if ( ! empty( $data['wp_autosave'] ) ) {
		$saved = wp_autosave( $data['wp_autosave'] );

		if ( is_wp_error( $saved ) ) {
			$response['wp_autosave'] = array(
				'success' => false,
				'message' => $saved->get_error_message(),
			);
		} elseif ( empty( $saved ) ) {
			$response['wp_autosave'] = array(
				'success' => false,
				'message' => __( 'Error while saving.' ),
			);
		} else {
			/* translators: Draft saved date format, see https://www.php.net/manual/datetime.format.php */
			$draft_saved_date_format = __( 'g:i:s a' );
			$response['wp_autosave'] = array(
				'success' => true,
				/* translators: %s: Date and time. */
				'message' => sprintf( __( 'Draft saved at %s.' ), date_i18n( $draft_saved_date_format ) ),
			);
		}
	}

	return $response;
}

Changelog

Version Description
3.9.0 Introduced.