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