Изменить аргументы для родительской темы `wp_register_style` через дочернюю тему

Работа над дочерней темой для сайта с большим количеством отдельных таблиц стилей, которые регистрируются / выставляются из темы и плагинов. Я хотел бы изменить некоторые атрибуты тегов <link> в конечном выпуске, избегая конфликтов после обновления родительской темы владельцем сайта.

Цель состоит в том, чтобы не перерегистрировать / повторно поставить в очередь те же .css файлы, которые уже установлены родительской темой и / или плагинами, эффективно передавая новый набор аргументов функции wp_register_style .

Например, в настоящее время это то, что делает родительская тема и плагины:

 // parent theme or plugin's php wp_register_style( 'a_stylesheet', $uri . 'css/a-stylesheet.css', array(), $version, 'screen' ); // html output <link rel='stylesheet' id='a_stylesheet-css' href='http://domain.com/wp-content/themes/theme/css/a-stylesheet.css' type='text/css' media='screen' /> 

Цель состоит в том, чтобы wp_register_style тема фактически изменила вызов wp_register_style , например:

 // child theme's php some_function_to_reregister( 'already_registered_file', $inherit, $inherit, $inherit, 'handheld' ) // if the above doesn't exist, do nothing; else, re-register with the new argument(s). // html output <link rel='stylesheet' id='a_stylesheet-css' href='http://domain.com/wp-content/themes/theme/css/a-stylesheet.css' type='text/css' media='handheld' /> 

Это изменяет атрибут <link media> на handheld вместо screen , но сохраняет все остальное, выполняемое родительской темой / плагином, и пропускает регистрацию файла, если он еще не был зарегистрирован нигде (т.е. после обновления).

Похоже, что это был бы гораздо более эффективный подход, чем де-регистрация / де-enqueuing css из родительской темы и плагинов только для копирования / вставки ее обратно в дочернюю тему и непредвиденных обломков в будущих обновлениях.

Solutions Collecting From Web of "Изменить аргументы для родительской темы `wp_register_style` через дочернюю тему"

Я не думаю, что есть встроенный безопасный способ сделать это, но вы можете напрямую модифицировать $wp_styles global после того, как все зарегистрировано, но до того, как они будут выведены или, по крайней мере, будут использовать его для извлечения параметров, которые первоначально был зарегистрирован с.

 global $wp_styles; if( isset( $wp_styles->registered['a_stylesheet'] ) ){ $wp_styles->registered['a_stylesheet']->args = 'handheld'; } 

Не идеально, но это может сработать для вас.