我有一个必须在多个网站上使用的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">
开发服务器做了一些代理工作,最后解释了这一点,但它没有解释所有这些谜团。
答案 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');