Title: _wp_copy_post_meta
Published: November 8, 2023
Last modified: May 20, 2026

---

# _wp_copy_post_meta( int $source_post_id, int $target_post_id, string $meta_key )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#wp--skip-link--target)

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

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#parameters)󠁿

 `$source_post_id`intrequired

Post ID to copy meta value(s) from.

`$target_post_id`intrequired

Post ID to copy meta value(s) to.

`$meta_key`stringrequired

Meta key to copy.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#source)󠁿

    ```php
    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 ) );
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/revision.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/revision.php#L541)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/revision.php#L541-L550)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#related)󠁿

| Uses | Description | 
| [add_metadata()](https://developer.wordpress.org/reference/functions/add_metadata/)`wp-includes/meta.php` |

Adds metadata for the specified object.

  | 
| [wp_slash()](https://developer.wordpress.org/reference/functions/wp_slash/)`wp-includes/formatting.php` |

Adds slashes to a string or recursively adds slashes to strings within an array.

  | 
| [get_post_meta()](https://developer.wordpress.org/reference/functions/get_post_meta/)`wp-includes/post.php` |

Retrieves a post meta field for the given post ID.

  |

[Show 1 more](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#)

| Used by | Description | 
| [wp_restore_post_revision_meta()](https://developer.wordpress.org/reference/functions/wp_restore_post_revision_meta/)`wp-includes/revision.php` |

Restore the revisioned meta values for a post.

  | 
| [wp_save_revisioned_meta_fields()](https://developer.wordpress.org/reference/functions/wp_save_revisioned_meta_fields/)`wp-includes/revision.php` |

Save the revisioned meta fields.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/_wp_copy_post_meta/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.4.0](https://developer.wordpress.org/reference/since/6.4.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2F_wp_copy_post_meta%2F)
before being able to contribute a note or feedback.