стиль очереди 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.

Author: Community, 2013-04-10

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";
 3
Author: jmlumpkin, 2013-04-10 15:19:58