如果你的网站相当小,你可以。。。
登录phpMyAdmin将数据库导出为SQL文件制作数据库SQL文件的副本,以便备份原始数据库,以防出错在文本编辑器中打开数据库SQL文件查找并替换domain1.com
具有domain2.com
.保存数据库SQL文件返回phpMyAdmin导入数据库SQL文件
EDIT 03/18/2016
完成上述步骤后,请继续执行以下步骤:
步骤1–创建要使用的函数
function mbe_migrate_widgets() {
}
步骤2–指定要搜索的内容和替换的内容
function mbe_migrate_widgets() {
$old_domain = \'http://dev.\';
$new_domain = \'http://beta.\';
}
步骤3–检索所有WordPress小部件
function mbe_migrate_widgets() {
$old_domain = \'http://dev.\';
$new_domain = \'http://beta.\';
global $wpdb;
// Get all Widgets
$widgets = $wpdb->get_results(
"
SELECT `option_id`, `option_name`
FROM $wpdb->options
WHERE `option_name`
LIKE \'%widget_%\'
"
);
}
步骤4–循环浏览所有WordPress小部件,并检索每个小部件的信息
function mbe_migrate_widgets() {
$old_domain = \'http://dev.\';
$new_domain = \'http://beta.\';
global $wpdb;
// Get all Widgets
$widgets = $wpdb->get_results(
"
SELECT `option_id`, `option_name`
FROM $wpdb->options
WHERE `option_name`
LIKE \'%widget_%\'
"
);
if ( ! $widgets ) {
return false;
}
$actions = array();
foreach ( $widgets as $widget ) {
// Retrieve the Widget data.
$widget_data = get_option( $widget->option_name );
}
return $actions;
}
步骤5–对小部件数据执行搜索和替换,并更新数据库记录
function mbe_migrate_widgets() {
$old_domain = \'http://dev.\';
$new_domain = \'http://beta.\';
global $wpdb;
// Get all Widgets
$widgets = $wpdb->get_results(
"
SELECT `option_id`, `option_name`
FROM $wpdb->options
WHERE `option_name`
LIKE \'%widget_%\'
"
);
if ( ! $widgets ) {
return false;
}
$actions = array();
foreach ( $widgets as $widget ) {
// Retrieve the Widget data.
$widget_data = get_option( $widget->option_name );
// Update the Widget data changing old domain to new domain.
$update = update_option(
$widget->option_name,
recursive_array_replace( $old_domain, $new_domain, $widget_data )
);
if ( $update ) {
$actions[\'success\'][] = $widget->option_id;
} else {
$actions[\'failed\'][] = $widget->option_id;
}
}
return $actions;
}
步骤6–包括自定义递归数组替换函数
// Recursive String Replace - recursive_array_replace(mixed, mixed, array);
function recursive_array_replace( $find, $replace, $array ) {
if ( ! is_array( $array ) ) {
return str_replace( $find, $replace, $array );
}
$newArray = array();
foreach ( $array as $key => $value ) {
$newArray[ $key ] = recursive_array_replace( $find, $replace, $value );
}
return $newArray;
}
给你。运行该函数一次,您的所有小部件就会神奇地重新开始工作。
Note: 这取决于您将此代码放置在何处或如何执行。请同时替换变量$old_domain
和$new_domain
照着
Extra Note: 还请记住,此示例仅影响小部件。如果您的网站的其他部分包含序列化数据中的URL,请相应地修改您的数据库查询。(我指的是代码的这一部分:SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE \'%widget_%\'
)
我会在我的博客上发布一个关于这个主题的链接,但我不想显得“垃圾”。这基本上是我在我的网站上写的一篇文章的复制/粘贴03/18/2016. 这个答案中的内容可能会过时,我网站上文章中的内容将来可能会变得更加相关。如果您感兴趣,请查看我的个人资料,以获得指向我的网站的链接。
序列化数据的有用解释:Anatomy of a serialize()\'ed value.