从子域访问时的主题切换

时间:2017-01-16 作者:venkat guru

从子域访问时需要切换主题。子域中未安装任何内容。我已将一个子域设置为指向原始域的CNAME。然后,通过查看$\\u服务器[\'SERVER\\u NAME\'],检测访问者是否在子域上。查看了各种来源并发现了此代码,但无法使其正常工作。

注:我是个新手

// regular site url
$my_url = \'http://example.com\';

// subdomain you want a different theme on
$my_sub_url = \'http://sub.example.com\';

// subdomain prefix, used to test whether primary or subdomain
$my_prefix = \'sub.\';

// folder name of theme to use instead on subdomain
$my_theme_name = \'my_mobile_theme\';


add_filter( \'template\'          , \'my_change_theme\' );
add_filter( \'option_template\'   , \'my_change_theme\' );
add_filter( \'option_stylesheet\' , \'my_change_theme\' );

// these 2 actions rewrite all urls in the body
// from main to sub domain
add_action( \'wp_head\'           , \'my_buffer_start\' );
add_action( \'wp_footer\'         , \'my_buffer_end\' );

// TRUE, if this is the subdomain, false otherwise
public function my_is_subdomain() {
  global $my_prefix;
  if( strpos( $_SERVER[\'SERVER_NAME\'], $my_prefix ) !== FALSE ) {
    return TRUE;
  }
  return FALSE;
}

// if this is the subdomain, return new theme
// otherwise, return original theme
public function my_change_theme( $theme ) {
  global $my_theme_name;
  if( my_is_subdomain() ) {
    return $my_theme_name;
  }
  return $theme;
}

public function my_buffer_start() {
  ob_start(\'my_buffer_cb\');
}

public function my_buffer_end() {
  ob_end_flush();
}

// replace primary url with subdomain url in body
// so that all links keep user on the subdomain
public function my_buffer_cb( $buffer ) {
  global $my__url, $my_sub_url;
  if( ! my_is_subdomain() ) {
    return $buffer;
  }

  // replace main domain with sub domain
  $buffer = str_replace( $my_url, $my_sub_url, $buffer);

  // !!! NOTE - you may not want to replace EVERY instance
  // for example, you may want to keep social media urls
  // intact, or rel="canonical", or links specifically
  // designed to switch between the primary and subdomain

  return $buffer;
}

2 个回复
SO网友:KAGG Design

WordPress在站点上只支持一个主题。如图所示的操作将产生不利影响。相反,您应该使用WordPress Multisite,它允许在子域上使用不同的主题。这是WordPress团队推荐的方法。

WoodPress Multisite上有WooCommerce的解决方案:WooCommerce Multistore plugin: 这相当昂贵(200美元),但在WordPress中使用不受支持的功能可能会花费更多。

SO网友:ThomasV

我不推荐KAGG Design的回答中描述的Woocommerce Multistore插件。

整体速度非常慢,这对股票同步非常不利。它还支持WPML,WPML是最糟糕的插件之一,它会使数据库过载,并会使存储超时。

因此,我选择了Mrinvent的Woocommerce Multistore。它是一个管理实时库存同步、PIM管理、订单管理和多语言的平台。

你可以每月付费,这使得它更便宜,也更容易尝试。

https://mrinvent.online

相关推荐

Subdomains to pages

嗨,我在wordpress上有一个网站,有2个页面,我想把它转换成子域。让我的网站在http://www.domain.com 有两页http://www.domain.com/page1 和http://www.domain.com/page2我想让他们在http://page1.domain.com &;http://page2.domain.com 分别地此外,我可能有子页面到第1页,我想访问使用主页的子域。我是说如果http://www.domain.com/page1/subpage1 是