wp_enqueue_style и rel, отличные от таблицы стилей?

#css #wordpress #wordpress-theming #less

#css #wordpress #wordpress-тематизация #Меньше

Вопрос:

Я создаю (или лучше пытаюсь) создать свою первую тему WordPress с меньшими затратами.

Что я делаю, так это использую подобный скрипт в моем functions.php

 wp_register_style('screen_css', get_bloginfo('template_url') . '/css/screen.less', array(), false, 'screen');
wp_enqueue_style('screen_css');
  

и в результате получается, что:

 <link rel='stylesheet' id='stigma_screen-css'  href='http://www.stigmahost.dch/wp-content/themes/stigmahost/css/screen.less?ver=1.0' type='text/css' media='screen' />
  

Вопрос в том, могу ли я как-то изменить rel =»stylesheet» при использовании функции wp_register_style() ?

Комментарии:

1. Ни одна из функций wp_register_style(), ни wp_enqueue_style() не позволят вам установить атрибут rel, но если вы можете предоставить больше информации о том, чего вы пытаетесь достичь, может быть, я смогу предложить обходной путь?

Ответ №1:

Хотя ни одна из функций не позволит вам передать это значение, у вас есть доступ к тегу до того, как он будет отображен с помощью фильтра style_loader_tag. Если вы сделаете что-то подобное этому…

 add_filter('style_loader_tag', 'my_style_loader_tag_function');

function my_style_loader_tag_function($tag){
  //do stuff here to find and replace the rel attribute

  return $tag;
}
  

… вы должны быть в состоянии заменить атрибут rel любым, каким захотите. Имейте в виду, что этот фильтр передаст весь тег в виде html, поэтому вам придется выполнить preg_replace() или что-то подобное, чтобы заменить значение на то, что вы хотите. Кроме того, этот фильтр будет запускаться каждый раз, когда вы ставите таблицу стилей в очередь, поэтому убедитесь, что вы выбрали правильный (с помощью preg_match () или чего-то еще), прежде чем изменять атрибут rel.

Ответ №2:

я знаю, что это старый вопрос, но он помог мне разобраться в этом. заимствуя из ответа brandwaffle, вот полная функция, которую я использовал:

 function childtheme_scripts() {

wp_enqueue_style('less',get_stylesheet_directory_uri() .'/style.less');
add_filter('style_loader_tag', 'my_style_loader_tag_function');

wp_enqueue_script('less',get_stylesheet_directory_uri() .'/jscripts/less-1.3.0.min.js', false,'1.3.0');

}
add_action('wp_enqueue_scripts','childtheme_scripts', 1);


function my_style_loader_tag_function($tag){
  //do stuff here to find and replace the rel attribute    
  return preg_replace("/='stylesheet' id='less-css'/", "='stylesheet/less' id='less-css'", $tag);
}
  

Комментарии:

1. less не нужен jQuery AFAIK, он есть в массиве зависимостей