切换不起作用的WordPress功能

时间:2017-11-03 13:46:29

标签: php wordpress

我有一个必须在多个网站上使用的WordPress主题。所以我编写了这个函数,以确定主题所在的网站:

/*
 * Check which site
*/
function determine_site() {

  $the_site = '';
  $URL = $_SERVER['HTTP_HOST'];

  switch( $URL ){
    case 'domain1.com':
    case 'develop1.ment.com':
      $the_site = 'domain1_com';
      break;
    case 'domain2.com':
    case 'develop2.ment.com':
      $the_site = 'domain2_com';
      break;
    default;
      $the_site = 'domain_undetermined';
      break;
  }
  return $the_site;
}

然后从另一个函数调用此函数,将其添加到站点上的body-class中,如下所示:

/*
 * Add body class
 */
function add_custom_body_class( $classes ) {
  $which_language = determine_site();
  $classes[] = $which_language;
  return $classes;
}
add_filter( 'body_class', 'add_custom_body_class' );

但是它达到了默认情况并将domain_undetermined设置为body - 类(它应该在第一个案例中匹配)。如果我在$URL - 函数的顶部打印出determine_site - var,就这样:

function determine_site() {

  $the_site = '';
  $URL = $_SERVER['HTTP_HOST'];
  echo '<pre>;
  print_r($URL);
  echo '</pre>;
  ...
  ...
  ...

然后输出这个(!?):

develop1.ment.comclass="home page-template-default page page-id-11 logged-in admin-bar no-customize-support wp-custom-logo domain_undetermined">

为什么它还会打印body - 类的结尾?

另一件可能有助于弄清楚斧头被埋葬的地方......如果我在sanitize_title上运行$URL(一个WordPress功能),那么:

function determine_site() {

  $the_site = '';
  $URL = $_SERVER['HTTP_HOST'];
  $URL = sanitize_title( $URL );
  echo '<pre>';
  print_r($URL);
  echo '</pre>';
  ...
  ...
  ...

...然后它返回此(即使我在develop1.ment.com - 域:

www-domain1-comclass="home page-template-default page page-id-11 logged-in admin-bar no-customize-support wp-custom-logo domain_undetermined">

开发服务器做了一些代理工作,最后解释了这一点,但它没有解释所有这些谜团。

1 个答案:

答案 0 :(得分:1)

这样的事情会取代你自己的&#34;添加身体类&#34;功能

/**
 * Add domain to body class for each site.
 */
function my_multisite_body_classes( $classes ) {
  $current_blog = get_blog_details( get_current_blog_id() );
  $classes[] = $current_blog->domain;
  return $classes;
}
add_filter('body_class', 'my_multisite_body_classes');