'; echo '

MultiReplace

'; echo '
'; echo 'Search:


'; echo 'Replace


'; echo 'Replace in
'; echo ''; echo '

'; echo ''; echo '
'; if ( !empty( $search ) && !empty( $replaceIn ) ) { if ( in_array( 'Postmeta', $replaceIn ) ) { $this->replacePostMeta( $search, $replace ); echo 'Post meta replaced
'; } if ( in_array( 'Options', $replaceIn ) ) { $this->replaceOptions( $search, $replace ); echo 'Options replaced
'; } if ( in_array( 'Posts', $replaceIn ) ) { $this->replacePosts( $search, $replace ); echo 'Posts replaced
'; } } else if ( !empty( $search ) ) { echo 'Nothing selected.
'; } echo ''; } /** * Replace posts * * @param $search * @param $replace */ public function replacePosts( $search, $replace ) { $allPosts = get_posts( array( 'numberposts' => -1, 'post_type' => get_post_types(), ) ); foreach ( $allPosts as $replacePost ) { wp_update_post( array( 'ID' => $replacePost->ID, 'post_content' => $this->replace( $replacePost->post_content, $search, $replace ), 'post_title' => $this->replace( $replacePost->post_title, $search, $replace ) ) ); } } /** * Replace options * * @param $search * @param $replace */ public function replaceOptions( $search, $replace ) { global $wpdb, $table_prefix; $results = $wpdb->get_results( "SELECT * FROM " . $table_prefix . "options" ); foreach ( $results as $result ) { $valueUnserialized = maybe_unserialize( $result->option_value ); $valueReplaced = $this->replace( $valueUnserialized, $search, $replace ); update_option( $result->option_name, $valueReplaced, $result->autoload ); } } /** * Replace post meta * * @param $search * @param $replace */ public function replacePostMeta( $search, $replace ) { global $wpdb, $table_prefix; $results = $wpdb->get_results( "SELECT * FROM " . $table_prefix . "postmeta" ); foreach ( $results as $result ) { $valueUnserialized = maybe_unserialize( $result->meta_value ); $valueReplaced = $this->replace( $valueUnserialized, $search, $replace ); update_post_meta( $result->post_id, $result->meta_key, $valueReplaced ); } } /** * Recursive function to replace strings, array and objects * * @param $needle * @param $search * @param $replace * @return array|mixed */ public function replace( $needle, $search, $replace ) { if ( is_object( $needle ) || is_array( $needle ) ) { // scan recursive foreach ( $needle as $key => $value ) { if ( is_array( $needle ) ) { $needle[$key] = $this->replace( $value, $search, $replace ); } else { $needle->{$key} = $this->replace( $value, $search, $replace ); } } } else { $needle = str_replace( $search, $replace, $needle ); } return $needle; } }