函数文档

_wp_preview_meta_filter()

💡 云策文档标注

概述

_wp_preview_meta_filter() 是一个 WordPress 过滤器函数,用于在预览时从自动保存中获取修订后的元数据值。它确保在预览模式下,仅对特定修订的元键返回自动保存的元值。

关键要点

  • 此过滤器仅在元键被修订、对象存在、文章类型非修订版且文章ID匹配对象ID时生效。
  • 函数通过 wp_post_revision_meta_keys() 检查元键是否可修订,并利用 wp_get_post_autosave() 获取自动保存数据。
  • 返回值为原始元值或自动保存的修订元值,具体取决于条件判断。

代码示例

function _wp_preview_meta_filter( $value, $object_id, $meta_key, $single ) {
	$post = get_post();

	if ( empty( $post )
		|| $post->ID !== $object_id
		|| ! in_array( $meta_key, wp_post_revision_meta_keys( $post->post_type ), true )
		|| 'revision' === $post->post_type
	) {
		return $value;
	}

	$preview = wp_get_post_autosave( $post->ID );

	if ( false === $preview ) {
		return $value;
	}

	return get_post_meta( $preview->ID, $meta_key, $single );
}

注意事项

  • 此函数在 WordPress 6.4.0 版本中引入,主要用于内部预览机制。
  • 开发者应确保正确使用相关函数如 wp_post_revision_meta_keys() 来定义可修订的元键。

📄 原文内容

Filters preview post meta retrieval to get values from the autosave.

Description

Filters revisioned meta keys only.

Parameters

$valuemixedrequired
Meta value to filter.
$object_idintrequired
Object ID.
$meta_keystringrequired
Meta key to filter a value for.
$singleboolrequired
Whether to return a single value.

Return

mixed Original meta value if the meta key isn’t revisioned, the object doesn’t exist, the post type is a revision or the post ID doesn’t match the object ID.
Otherwise, the revisioned meta value is returned for the preview.

Source

function _wp_preview_meta_filter( $value, $object_id, $meta_key, $single ) {
	$post = get_post();

	if ( empty( $post )
		|| $post->ID !== $object_id
		|| ! in_array( $meta_key, wp_post_revision_meta_keys( $post->post_type ), true )
		|| 'revision' === $post->post_type
	) {
		return $value;
	}

	$preview = wp_get_post_autosave( $post->ID );

	if ( false === $preview ) {
		return $value;
	}

	return get_post_meta( $preview->ID, $meta_key, $single );
}

Changelog

Version Description
6.4.0 Introduced.