WP_ENQUEUE_STYLE不会让我只强制执行屏幕

时间:2013-04-10 作者:jmlumpkin

我用根作为我一直在研究的主题的起点。然后我生成了一个打印。css文件,但在Chrome的情况下,它仍然使用引导响应。css查询,把事情搞砸。

answer on 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">
如果我尝试一些other types listed on W3, 有些工作,有些不工作(电视从不渲染任何东西,但打印可以)。例如,我的print one工作正常:

wp_enqueue_style(\'roots_print_style\', \'/css/print.css\', false, null, \'print\');
我怎样才能让它工作?我只是在标题中这样做,而不使用wp\\u enqueue\\u样式,还是我遗漏了什么?我没有得到任何错误,并使用WP 3.5.1。

1 个回复
最合适的回答,由SO网友:jmlumpkin 整理而成

我找到了答案。Roots has a 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";

结束

相关推荐