WordPress修改数据库返回数据

有个简单需求,就是 `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);

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注