So kopieren Sie ein benutzerdefiniertes Feld vom CPT des Benutzers in die normalen Posts des Benutzers

Jeder Autor hat einen einzelnen Beitrag in einem CPT. In ihrem CPT-Post haben sie ein benutzerdefiniertes Feld.

Jeder Autor kann auch so viele Posts schreiben, wie er möchte.

Wie kann ich das benutzerdefinierte Feld des CPT-Posts des Benutzers kopieren, das auf alle normalen Post-Posts kopiert wird, die sie anschließend posten?

Jede Hilfe sehr geschätzt.

Solutions Collecting From Web of "So kopieren Sie ein benutzerdefiniertes Feld vom CPT des Benutzers in die normalen Posts des Benutzers"

Sie können die Aktion wp_insert_post wenn ein Benutzer einen “normalen” Beitrag erstellt / speichert und dann seinen benutzerdefinierten Beitrag sucht und alle erforderlichen Felder kopiert:

 function wpse_203349_copy_post_meta( $post_ID, $post, $update ) { if ( $post->post_type !== 'post' ) return; $users_custom_posts = get_posts( array( 'posts_per_page' => 1, 'post_author' => $post->post_author, 'post_type' => 'custom_post_type', ) ); if ( ! $users_custom_posts ) return; // This author doesn't currently have any custom posts $fields = get_post_custom( $users_custom_posts[0]->ID ); foreach ( $fields as $field => $value ) { if ( $field[0] !== '_' && ( empty( $value[0] ) || ! is_array( $value[0] ) ) ) // Ignore "private" fields (prefixed with an underscore or serialized data) add_post_meta( $post_ID, $field, empty( $value[0] ) ? '' : $value[0], true /* Unique */ ); // If the field already exists, it won't be overwritten, unlike update_post_meta() } } add_action( 'wp_insert_post', 'wpse_203349_copy_post_meta', 10, 3 );