Twenty Thirteen: Standardize And Update Genericons
|Reported by:||celloexpressions||Owned by:||lancewillett|
Since Genericons updates are backwards-compatible, there is no reason that we shouldn't update the version of Genericons packaged with Twenty Thirteen (and eventually Fourteen), just like plugins are doing. Including an old version could eventually break plugins using Genericons (unless version comparison for enqueuing styles is added to core), if Twenty Thirteen's version wins out in the loading process and is missing ore recent changes that the plugin requires. While this scenario is not particularly concerning in the short term (ie, we don't need to worry about the frequency of updates), it will become much more of a problem if we never update Genericons in themes and plugins.
In addition to updating to version 3.0 (which should be a no-brainer), we should standardize the bundled css to the version packaged with Genericons, which is the standard way of loading them as documented in #24864. The issue is the [class*="genericon"] selector, which should just be .genericon (the directory structure of Genericons bundled with Thirteen should also be standardized to facilitate easier updates). It's been mentioned that that selector can cause a lot of problems in WordPress anyway. Making this change could very well break child themes (Twenty Thirteen itself doesn't use the helper css, and its use is discouraged), but the issue is that they're already broken even if they don't know it. If a plugin's version of genericons.css is loaded instead of Twenty Thirteen's, the child theme will break (at the fault of Twenty Thirteen).
The only way to make theme-plugin-child-theme interactions work consistently well is to make sure they're all using the same Genericons base css, and until that happens, things will be broken in the wild (which they are currently). It's too bad that we might break child themers' code (which is already broken in certain environments) because we were doing it wrong, but the best solution at this point is to fix the source of the problem so that the problem doesn't continue escalating.