Löschen / Ersetzen von Img-Tags im Post-Inhalt für automatisch veröffentlichte Posts

In meinem Blog habe ich die automatische Veröffentlichung für Posts eingerichtet und bekomme jeden Tag 5 Tausend neue Posts, in diesem Moment habe ich mehr als 150 Tausend Posts.

Ich brauche ein Skript oder ein Plugin oder eine function, um eine Verbindung zu meiner database herzustellen und alle img Tags vom Post-Inhalt zu img .

Ich kenne den regulären Ausdruck, um die IMG-Tags zu finden, aber ich kann kein Skript finden, um diesen regulären Ausdruck zu verwenden

 ]+\> 

um Imgs in bereits veröffentlichten Posts zu ersetzen und zu verhindern, dass neue Posts Image-Tags enthalten.

Ich habe diese class gefunden und denke, dass sie mein Ziel erreichen wird, aber ich bin nicht sicher, wie ich das ändern soll

 $wpdb->query( "UPDATE $wpdb->posts SET post_parent = 7 WHERE ID = 15 AND post_status = 'static'" ); 

um meinen Bedürfnissen zu entsprechen.

Bitte beachten Sie: Meine Website verwendet einige automatische Veröffentlichung Beiträge function Any ideas!

Solutions Collecting From Web of "Löschen / Ersetzen von Img-Tags im Post-Inhalt für automatisch veröffentlichte Posts"

Sie können die function get_posts , um all Ihren Post zu erhalten, und dann einen Foreach-Zyklus verwenden, um die img-Tags durch die von Ihnen gepostete Regex zu ersetzen und dann wp_update_post zu verwenden, um den Post-Inhalt zu ändern:

 function remove_images_form_past_posts() { if ( get_transient('images_removed_from_past') ) return; $posts = get_posts('nopaging=1'); if ( $posts ) { foreach ( $posts as $post ) { $newcontent = preg_replace('/]+\>/i', '', $post->post_content); $newpost = array( 'ID' => $post->ID, 'post_content' => $newcontent); wp_update_post($newpost); } set_transient('images_removed_from_past', 1); } } add_action('admin_init','remove_images_form_past_posts'); 

Dieser Code sollte nur einmal verwendet werden, um den Inhalt der vergangenen Posts zu ändern. Um sicherzustellen, dass es nur einmal ausgeführt wird, habe ich einen Transient verwendet. Siehe Codex für die transiente API .

Jetzt müssen Sie eine function hinzufügen, die sich in 'wp_insert_post_data' Filter-Hook 'wp_insert_post_data' und verhindert, dass neue Beiträge mit Bildern hinzugefügt werden:

 function remove_images_before_publish( $data, $postarr ) { if ( ! empty($data['post_content']) ) $data['post_content'] = preg_replace('/]+\>/i', '', $data['post_content']); return $data; } add_filter('wp_insert_post_data','remove_images_before_publish', 20, 2);