стиль очереди wp не позволит мне применять только экран
Я использую корни в качестве стартера для темы, над которой я работал. Затем я сгенерировал файл print.css, но в случае Chrome он все еще использует запросы.css, реагирующие на начальную загрузку, и все портит.
Этот ответ на SO объясняет проблему, и я знаю, что он исправляет то, с чем у меня проблема (пробовал).
Что происходит, так это то, что при использовании этого
wp_enqueue_style('roots_bootstrap_responsive_style', '/css/bootstrap-responsive.css', array('roots_bootstrap_style'), null, 'screen');
Это всегда выводит
<link rel="stylesheet" href="/css/bootstrap-responsive.css">
Когда мне действительно это нужно, чтобы показать
<link rel="stylesheet" href="/css/bootstrap-responsive.css" media="screen">
Если я попробую некоторые из других типов, перечисленных в W3, некоторые работают, а некоторые нет (телевидение никогда ничего не отображает, но печать делает). Например, моя печатная версия отлично работает:
wp_enqueue_style('roots_print_style', '/css/print.css', false, null, 'print');
Как я могу заставить это работать? Я просто делаю это в заголовке, не используя wp_enqueue_style, или я что-то упускаю? Я не получаю никаких ошибок и использую WP 3.5.1.
1 answers
Я нашел ответ. Корни имеют тег roots_clean_style_tag, который ограничивает все, кроме печати в качестве типа носителя.
Я немного обновил свой, чтобы просто разрешить экран:
function roots_clean_style_tag($input) {
preg_match_all("!<link rel='stylesheet'\s?(id='[^']+')?\s+href='(.*)' type='text/css' media='(.*)' />!", $input, $matches);
// Only display media if it's print
if($matches[3][0] === 'print'){
$media = ' media="print"';
} elseif ($matches[3][0] === 'screen'){
$media = ' media="screen"';
}
else{
$media = '';
}
//$media = $matches[3][0] === 'print' ? ' media="print"' : '';
return '<link rel="stylesheet" href="' . $matches[2][0] . '"' . $media . '>' . "\n";