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.
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. |