bloginfo(\'stylesheet_url\')
将始终返回当前主题的样式表。如果当前主题是child theme, 例如,它将返回style.css
相对于子主题的根而不是父主题的根。
bloginfo(\'template_url\')
将always 返回父主题的模板目录URL。所以使用<?php bloginfo(\'template_url\'); ?>/style.css
将始终是父主题的样式表。
自从bloginfo
echo出事了,我猜你没有使用WordPressenqueue system, 你应该是这样的。这是最灵活的。最终用户想要删除您的样式表?简单只是dequeue it.
也就是说,您可以通过过滤器更改bloginfo的输出。
要了解其工作原理,您必须跟踪其工作原理bloginfo
作品首先,bloginfo
是的包装器get_bloginfo
. 让我们看看这条线,与你的问题相关:
<?php
function get_bloginfo( $show = \'\', $filter = \'raw\' ) {
switch( $show ) {
// snip snip
case \'stylesheet_url\':
$output = get_stylesheet_uri();
break;
case \'stylesheet_directory\':
$output = get_stylesheet_directory_uri();
break;
case \'template_directory\':
case \'template_url\':
$output = get_template_directory_uri();
break;
// snip snip
}
$url = true;
if (strpos($show, \'url\') === false &&
strpos($show, \'directory\') === false &&
strpos($show, \'home\') === false)
$url = false;
if ( \'display\' == $filter ) {
if ( $url )
$output = apply_filters(\'bloginfo_url\', $output, $show);
else
$output = apply_filters(\'bloginfo\', $output, $show);
}
return $output;
}
这是
bloginfo
.
<?php
function bloginfo( $show=\'\' ) {
echo get_bloginfo( $show, \'display\' );
}
如您所见,过滤器始终设置为
display
, 这意味着WP将使用
apply_filters
在…上
get_bloginfo
\'s输出。
所以要改变现状,你可以bloginfo
或bloginfo_url
. 我们想要bloginfo_url
.
<?php
add_filter(\'bloginfo_url\', \'wpse76262_change_stylesheet\', 10, 2);
function wpse76262_change_stylesheet($url, $show)
{
if (\'stylesheet_url\' == $show) {
$url = \'/the/change/stylesheet.css\';
}
return $url;
}
中也有过滤器
get_stylesheet_uri
,
get_template_directory_uri
, 和
get_stylesheet_directory_uri
你也可以用。