我有一个WordPress站点,其中CSS和Javascript URL/标记最终看起来像这样
<link rel=\'stylesheet\' id=\'dashicons-css\' href=\'http://example.com/wp-includes/css/dashicons.min.css?ver=4.7.8\' type=\'text/css\' media=\'all\' />
<script type=\'text/javascript\' src=\'http://example.com/wp-includes/js/jquery/jquery.js?ver=1.12.4\'></script>
是否可以将WordPress配置为使用无方案的相对URL?i、 e生成如下所示的链接?
<link rel=\'stylesheet\' id=\'dashicons-css\' href=\'//example.com/wp-includes/css/dashicons.min.css?ver=4.7.8\' type=\'text/css\' media=\'all\' />
<script type=\'text/javascript\' src=\'//example.com/wp-includes/js/jquery/jquery.js?ver=1.12.4\'></script>
(最终目标是HTML页面,通过
http
如果他们通过
http
, 或
https
如果他们通过
https
)
如果这是不可能的,是否有人有建议(哪些函数或挂钩的目标)的人希望写一个插件,可以做到这一点?
此外,是的,仅通过HTTPs提供服务是一种解决方案,但对于我的特定场景来说并不可行。
谢谢
SO网友:Nathan Johnson
您可以使用style_loader_src
和script_loader_src
过滤器。
namespace WPSE;
\\add_filter( \'style_loader_src\' , __NAMESPACE__ . \'\\protocol_relative-url\' );
\\add_filter( \'script_loader_src\', __NAMESPACE__ . \'\\protocol_relative-url\' );
function protocol_relative_url( string $url ) : string {
return str_replace( [ \'http:\', \'https:\' ], \'\', $url );
}
/* Notes:
* Namespaces require PHP > 5.3
* [] array syntax requires PHP > 5.4
* String type declaration requires PHP > 7.0
*/