Bulk verschieben (oder kopieren) von einem benutzerdefinierten Feld auf den Post-Inhalt?

Ich muss den Inhalt eines benutzerdefinierten Felds in den Hauptpostkörper verschieben (oder kopieren) und vorhandenen Inhalt ersetzen.

Ich muss das für ein paar hundert Beiträge tun … Gibt es einen schnellen Weg, dies zu tun?

Ich kann die Verschiebung von Werten von einem Meta-Feld zu einem anderen in SQL verwalten, aber ich bin mir nicht sicher, wie ich das mit dem Post-Inhalt machen soll …

Wenn mir jemand ein paar Hinweise geben könnte, die sehr geschätzt werden.

Solutions Collecting From Web of "Bulk verschieben (oder kopieren) von einem benutzerdefinierten Feld auf den Post-Inhalt?"

Für SQL wird der Inhalt des Posts in der Tabelle “wp_posts” unter der Spalte “post_content” gespeichert. Wenn Sie dies von phpmyadmin tun, müssen Sie darauf achten, dass Sie nur den Hauptpost und nicht eine seiner Überarbeitungen aktualisieren

Wenn Sie nach einer Lösung suchen, die auf WordPress basiert, verwenden Sie wp_update_post als WordPress- wp_update_post

 // Update post 37 $my_post = array(); $my_post['ID'] = 37; $my_post['post_content'] = get_post_meta($my_post['ID'], 'meta_key', true); // Update the post into the database wp_update_post( $my_post ); 

Angenommen, Sie möchten dies für alle Posts tun, bei denen custom_field nicht leer ist, fügen Sie dies Ihrer functions.php hinzu:

 add_shortcode('update-posts-from-custom-fields', 'upfc_fields321'); function upfc_fields321() { $args = array( 'meta_key' => 'custom_field', 'meta_query' => array( array( 'key' => 'custom_field', 'value' => '', 'compare' => '!=', ), ), 'post_count' => '-1' ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { $post_counter = $save_counter = $delete_counter = 0; while ( $the_query->have_posts() ) { $the_query->the_post(); global $post; // not sure if this is needed, but it can't hurt echo ' 

' . the_title() . '

' . the_content() . '
'; $post_counter++; $post->post_content = get_post_meta($post->ID, 'custom_field', true); $post->post_content_filtered = ''; $post->post_excerpt = ''; // uncomment next line when you are ready to commit changes // wp_update_post($post); $save_counter++; // uncomment next line if you want to delete the meta key (useful if you have too many posts and want to do them in batchces) // delete_post_meta($post->id, 'custom_field'); $delete_counter++; echo '
' . the_content() . '
'; } } else { // no posts found }; echo '
Processed posts: ' . $post_counter . '
Saved posts:' . $save_counter . '
Deleted meta from: ' . $delete_counter . ' posts'; wp_reset_postdata() ; }

Der Code custom_field alle Posts ab, die custom_field und ersetzt den Inhalt durch den Inhalt dieses Felds. Wie es jetzt ist, speichert es die Änderungen nicht, zeigt nur den alten und den neuen Inhalt nebeneinander an, so dass Sie überprüfen können, ob alles richtig ist (Sie sollten Ihre database sowieso vorher sichern, übrigens).

Wenn Sie einige Änderungen sehen wp_update_post(...) , wp_update_post(...) die wp_update_post(...) die wp_update_post(...) .

Wenn Sie zu viele Posts haben, ändern Sie das Limit auf etwa 40 – 80 Posts und delete_post_meta(...) auch die delete_post_meta(...) , damit die benutzerdefinierten Felder nach dem Kopieren gelöscht werden und nicht in der nächsten Ausführung delete_post_meta(...) function.

Alles, was Sie jetzt tun müssen, ist [update-posts-from-custom-fields] in jedem Post oder jeder Seite zu platzieren und zu [update-posts-from-custom-fields] . Ich selbst würde es in eine leere Seite schreiben (ich halte normalerweise eine Testseite auf meinen Webseiten, die nur für den Admin verfügbar ist, wo ich Sachen teste und functionen wie diese ausführe).

Es kann eine Weile dauern, da es alle gefundenen Beiträge rendert.