';
echo '
MultiReplace
';
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;
}
}