函数文档

wp_post_revision_title_expanded()

💡 云策文档标注

概述

wp_post_revision_title_expanded() 函数用于获取修订版的格式化日期时间戳,并链接到修订版页面。它返回一个包含作者头像、姓名、时间差和日期的字符串,支持自动保存和当前修订版的标识。

关键要点

  • 参数:$revision(必需,修订版 ID 或 WP_Post 对象),$link(可选,布尔值,是否链接到修订版页面,默认 true)
  • 返回值:字符串(格式化日期时间戳)或 false(如果 $revision 无效或 post_type 不是 'post'、'page'、'revision')
  • 功能:基于修订版对象生成包含作者信息、时间差和本地化日期的标题,可应用过滤器 wp_post_revision_title_expanded 进行自定义
  • 相关函数:使用 get_post()、get_avatar()、date_i18n()、human_time_diff() 等辅助函数处理数据和格式化

代码示例

function wp_post_revision_title_expanded( $revision, $link = true ) {
    $revision = get_post( $revision );
    if ( ! $revision ) {
        return $revision;
    }
    if ( ! in_array( $revision->post_type, array( 'post', 'page', 'revision' ), true ) ) {
        return false;
    }
    $author = get_the_author_meta( 'display_name', $revision->post_author );
    $datef = _x( 'F j, Y @ H:i:s', 'revision date format' );
    $gravatar = get_avatar( $revision->post_author, 24 );
    $date = date_i18n( $datef, strtotime( $revision->post_modified ) );
    $edit_link = get_edit_post_link( $revision->ID );
    if ( $link && current_user_can( 'edit_post', $revision->ID ) && $edit_link ) {
        $date = "$date";
    }
    $revision_date_author = sprintf(
        __( '%1$s %2$s, %3$s ago (%4$s)' ),
        $gravatar,
        $author,
        human_time_diff( strtotime( $revision->post_modified_gmt ) ),
        $date
    );
    $autosavef = __( '%s [Autosave]' );
    $currentf = __( '%s [Current Revision]' );
    if ( ! wp_is_post_revision( $revision ) ) {
        $revision_date_author = sprintf( $currentf, $revision_date_author );
    } elseif ( wp_is_post_autosave( $revision ) ) {
        $revision_date_author = sprintf( $autosavef, $revision_date_author );
    }
    return apply_filters( 'wp_post_revision_title_expanded', $revision_date_author, $revision, $link );
}

注意事项

  • 函数内部使用 get_post() 获取修订版对象,如果对象不存在或 post_type 不符合要求,会返回 false 或原始值
  • 日期格式通过 _x() 函数本地化,支持翻译上下文
  • 链接功能依赖于 current_user_can() 权限检查和 get_edit_post_link() 可用性
  • 过滤器 wp_post_revision_title_expanded 允许开发者自定义输出字符串

📄 原文内容

Retrieves formatted date timestamp of a revision (linked to that revisions’s page).

Parameters

$revisionint|WP_Postrequired
Revision ID or revision object.
$linkbooloptional
Whether to link to revision’s page.

Default:true

Return

string|false gravatar, user, i18n formatted datetimestamp or localized ‘Current Revision’.

Source

function wp_post_revision_title_expanded( $revision, $link = true ) {
	$revision = get_post( $revision );

	if ( ! $revision ) {
		return $revision;
	}

	if ( ! in_array( $revision->post_type, array( 'post', 'page', 'revision' ), true ) ) {
		return false;
	}

	$author = get_the_author_meta( 'display_name', $revision->post_author );
	/* translators: Revision date format, see https://www.php.net/manual/datetime.format.php */
	$datef = _x( 'F j, Y @ H:i:s', 'revision date format' );

	$gravatar = get_avatar( $revision->post_author, 24 );

	$date      = date_i18n( $datef, strtotime( $revision->post_modified ) );
	$edit_link = get_edit_post_link( $revision->ID );
	if ( $link && current_user_can( 'edit_post', $revision->ID ) && $edit_link ) {
		$date = "<a href='$edit_link'>$date</a>";
	}

	$revision_date_author = sprintf(
		/* translators: Post revision title. 1: Author avatar, 2: Author name, 3: Time ago, 4: Date. */
		__( '%1$s %2$s, %3$s ago (%4$s)' ),
		$gravatar,
		$author,
		human_time_diff( strtotime( $revision->post_modified_gmt ) ),
		$date
	);

	/* translators: %s: Revision date with author avatar. */
	$autosavef = __( '%s [Autosave]' );
	/* translators: %s: Revision date with author avatar. */
	$currentf = __( '%s [Current Revision]' );

	if ( ! wp_is_post_revision( $revision ) ) {
		$revision_date_author = sprintf( $currentf, $revision_date_author );
	} elseif ( wp_is_post_autosave( $revision ) ) {
		$revision_date_author = sprintf( $autosavef, $revision_date_author );
	}

	/**
	 * Filters the formatted author and date for a revision.
	 *
	 * @since 4.4.0
	 *
	 * @param string  $revision_date_author The formatted string.
	 * @param WP_Post $revision             The revision object.
	 * @param bool    $link                 Whether to link to the revisions page, as passed into
	 *                                      wp_post_revision_title_expanded().
	 */
	return apply_filters( 'wp_post_revision_title_expanded', $revision_date_author, $revision, $link );
}

Hooks

apply_filters( ‘wp_post_revision_title_expanded’, string $revision_date_author, WP_Post $revision, bool $link )

Filters the formatted author and date for a revision.

Changelog

Version Description
3.6.0 Introduced.