跨不同域共享CSS样式表

时间:2013-03-11 13:46:38

标签: css wordpress cross-domain

我正在开发两个不同的WordPress网站,这些网站在很多方面相似,但皮肤不同。

例如,假设我正在处理两个“杂志”网站,它们共享相同的CSS布局,例如网格系统,边缘等,但不同的CSS装饰属性,例如渐变,颜色,阴影。

让他们分享相同的基本CSS布局,但不同的装饰CSS的最佳方法是什么?

最初我想的是......

<link rel="stylesheet" type="text/css" media="all" href="LINK-TO-BASE-CSS-ON-PRIMARY-DOMAIN.css" />
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'template_url' ); ?>/style.css" /> <!-- This would be the 'top-up' CSS -->

但这对我来说似乎并不特别干净。我承认,还有一个非常相似的问题here

这仍然被认为是最好的方法吗? 链接到另一个域有什么缺点吗?我已经读过,由于跨域加载,这甚至可能是优势

3 个答案:

答案 0 :(得分:6)

你的建议很好。我不确定是否存在称为“跨域加载”的优势,但在另一台服务器中托管样式表是一种非常常见的做法。此其他服务器称为CDN或内容分发网络。以下是有关CDN及其优势的一些信息:

http://www.sitepoint.com/7-reasons-to-use-a-cdn/


此外,如果您要使用单独的域来托管文件,请提示:执行一些DNS prefetching。这很简单:

<link rel="dns-prefetch" href="//myexternalcdn.com" />

答案 1 :(得分:1)

尝试分离布局结构和模板,并调用来自同一域的所有内容

<link rel="stylesheet" type="text/css" media="all" href="fileserverdomain/css/structure.css" />
<link rel="stylesheet" type="text/css" media="all" href="fileserverdomain/css/firsttamplatename.css" />

OR

<link rel="stylesheet" type="text/css" media="all" href="fileserverdomain/css/structure.css" />
<link rel="stylesheet" type="text/css" media="all" href="fileserverdomain/css/secondtamplatename.css" />

此解决方案的好处是您可以自行提供切换模板:D

答案 2 :(得分:0)

您可以使用此过滤器来过滤掉任何条件或替代输出href字符串的样式,例如:

add_filter( 'style_loader_src', function($href){
if(strpos($href, "name-of-allowed.css") !== false) {
return $href;
}
return false;
});