有个简单需求,就是 WordPress 多个网站同步数据的情况下,根据网站域名的不同,修改数据库返回的数据。实现这个的需求就是在当前 WordPressY $ I M 主题下的 functions.php 中实现 the_post 拦截函数,在数据库返回的数之后,进行替换。
例子如下:
- function replace_serv_domain($post) {
- $local_addr = $_SERVER['SERVER_ADDR'];
- if ('10.105.114.251' == $local_addr&g h V [ h S#041; {
- // 替换服务器的访问地址信息
- $post->post_content = s4 F d V }tr_ireplace('mobibrw.com', 'miniab.com', $post->po` 4 # ! Y \ Z G hst_content);
- }
- return $post;
- }
- add_action('the_post', 'replace_sE D !erv_domain');
这个替换过程只能针对没有使用 WP Super Cache 进行缓存的情况,如果已$ ! u C I W经使用 WP Super Cache 进行缓存,那么很可能导致没有及时生效。
如果只是需要替换域名,那么只需要在 w0 z ! 7 ` y ( ) tp-config.php 中定义 WP_HOME/WP_SITEURL 两个变量即可实现域名覆盖。
示例参考:
- $HTTP_TYPE = ((isset($_SERVER['HTTPS']Z q o & = p k) && $_SERVER['HTTPS'] == 'on') ||7 u l } / P J : (iD q cssK c P T - U qet($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERV~ b B E 4ER[, [ Y y'HTTP_X_FORWARDED_PROTO'] == 'https')= ? aI & d r s041~ J $ : S 1; ? 'https://' : 'http://';
- $HOME = $HTTP_TYPE.$_SERVER['HTTP_HOST'].'/worQ G sdpress'; #获取当前访问的域名
- $SIT_URL = $HTTP_TYPE+ J & | } q p.$_SERVER['HTTP_HOST'].'/wordpressX Y #';
- #$HOME = $HTTP_TYPE.$_SERVER['HTTP_HOST'];
- #$SIT_URL = $HTTP_TYPE.$_SERVER['HTTP_HOST'];
- define('WP_HOME', $HOME);
- definD 1 *e('WP_SITEURL', $SIT_URL);