函数文档

_wp_copy_post_meta()

💡 云策文档标注

概述

_wp_copy_post_meta() 是一个 WordPress 内部函数,用于将指定元键的元数据从一个文章复制到另一个文章。它主要用于支持文章修订功能,确保元数据在修订过程中正确传递。

关键要点

  • 函数接受三个必需参数:$source_post_id(源文章ID)、$target_post_id(目标文章ID)和$meta_key(要复制的元键)。
  • 使用 get_post_meta() 获取源文章的元值,并通过 add_metadata() 函数(而非 add_post_meta())添加到目标文章,以兼容修订文章或常规文章。
  • 在复制时使用 wp_slash() 处理元值,确保字符串安全转义。
  • 该函数自 WordPress 6.4.0 版本引入,主要用于 wp_restore_post_revision_meta() 和 wp_save_revisioned_meta_fields() 等修订相关函数。

代码示例

function _wp_copy_post_meta( $source_post_id, $target_post_id, $meta_key ) {
	foreach ( get_post_meta( $source_post_id, $meta_key ) as $meta_value ) {
		/**
		 * We use add_metadata() function vs add_post_meta() here
		 * to allow for a revision post target OR regular post.
		 */
		add_metadata( 'post', $target_post_id, $meta_key, wp_slash( $meta_value ) );
	}
}

注意事项

  • 这是一个内部函数,通常不建议在插件或主题中直接调用,除非有特定需求如自定义修订处理。
  • 函数设计用于处理单个元键,如果元键对应多个值,会遍历并复制所有值。
  • 使用 add_metadata() 而非 add_post_meta() 是为了确保兼容性,特别是当目标文章是修订版本时。

📄 原文内容

Copy post meta for the given key from one post to another.

Parameters

$source_post_idintrequired
Post ID to copy meta value(s) from.
$target_post_idintrequired
Post ID to copy meta value(s) to.
$meta_keystringrequired
Meta key to copy.

Source

function _wp_copy_post_meta( $source_post_id, $target_post_id, $meta_key ) {

	foreach ( get_post_meta( $source_post_id, $meta_key ) as $meta_value ) {
		/**
		 * We use add_metadata() function vs add_post_meta() here
		 * to allow for a revision post target OR regular post.
		 */
		add_metadata( 'post', $target_post_id, $meta_key, wp_slash( $meta_value ) );
	}
}

Changelog

Version Description
6.4.0 Introduced.