wp_enqueue_style и rel, кроме таблицы стилей?

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

Что я делаю, так это использую такой скрипт в моем 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()?

2 ответа

Решение

Хотя ни одна из функций не позволит вам передать это значение, у вас есть доступ к тегу до его визуализации с помощью фильтра 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() или что-то подобное, чтобы заменить значение на то, что вы хотите. Кроме того, этот фильтр будет запускаться каждый раз, когда вы ставите таблицу стилей в очередь, поэтому перед изменением атрибута rel убедитесь, что вы проверяли, что у вас есть правильный (с preg_match() или чем-то еще).

Я знаю, что это старый вопрос, но это помогло мне понять это. заимствуя из ответа 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);
}
Другие вопросы по тегам