有个简单需求,就是 WordPress 多个网站同步数据的情况下,根据网站域名的不同,修改数据库返回的数据。实现这个的需求就是在当前 WordPress 主题下的 functions.php 中实现 the_post 拦截函数,在数据库返回的数之后,进行替换。
function replace_serv_domain($post) {
$local_addr = $_SERVER['SERVER_ADDR'];
if ('10.105.114.251' == $local_addr) {
// 替换服务器的访问地址信息
$post->post_content = str_ireplace('mobibrw.com', 'miniab.com', $post->post_content);
}
return $post;
}
add_action('the_post', 'replace_serv_domain');
这个替换过程只能针对没有使用 WP Super Cache 进行缓存的情况,如果已经使用 WP Super Cache 进行缓存,那么很可能导致没有及时生效。
如果只是需要替换域名,那么只需要在 wp-config.php 中定义 WP_HOME/WP_SITEURL 两个变量即可实现域名覆盖。
$HTTP_TYPE = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$HOME = $HTTP_TYPE.$_SERVER['HTTP_HOST'].'/wordpress'; #获取当前访问的域名
$SIT_URL = $HTTP_TYPE.$_SERVER['HTTP_HOST'].'/wordpress';
#$HOME = $HTTP_TYPE.$_SERVER['HTTP_HOST'];
#$SIT_URL = $HTTP_TYPE.$_SERVER['HTTP_HOST'];
define('WP_HOME', $HOME);
define('WP_SITEURL', $SIT_URL);
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!