Make WordPress Core

Opened 15 years ago

Closed 13 years ago

Last modified 13 years ago

#18753 closed enhancement (fixed)

Add data to stylesheets

Reported by: kobenland Owned by: ryan
Priority: normal Milestone: 3.6
Component: Template Version:
Severity: normal Keywords: has-patch commit 2nd-opinion needs-codex
Cc: Focuses:

Description

In my humble opinion it would be awesome to provide theme developers an easy function to add extra data to registered stylesheets.

This way they could use the 'wp_head' action to cleanly make stylesheets conditional for IE, make them alternate or add RTL support.

Like wp_add_inline_style(), this function could really contribute to decluttering template files.

Attachments (7)

functions.wp-styles.php.patch​ (1.8 KB ) - added by kobenland 15 years ago.
Patch
18753.twentythirteen.diff​ (910 bytes ) - added by obenland 13 years ago.
This is how Twenty Thirteen could benefit from it.
18753.diff​ (1.5 KB ) - added by obenland 13 years ago.
18753.1.diff​ (1.1 KB ) - added by obenland 13 years ago.
18753.twentythirteen.1.diff​ (910 bytes ) - added by obenland 13 years ago.
18753.twentytwelve.diff​ (1.0 KB ) - added by obenland 13 years ago.
18753.2.diff​ (2.2 KB ) - added by nacin 13 years ago.

Download all attachments as: .zip

Change History (24)

#1 @nacin
15 years ago

This exists currently, but you have to dig into $wp_styles and use add_data(), such as add_data( 'ie', 'conditional', 'lte IE 7' ) and add_data( $handle, 'rtl', true );.

It's complex (I didn't provide a code sample as I'd have to look it up beyond what I provided) and I wouldn't mind some wrappers here.

#2 @kobenland
15 years ago

  • Keywords 2nd-opinion added

#3 @bitacre
14 years ago

I concur.

#4 @WraithKenny
14 years ago

  • Cc Ken@… added

#5 @westi
14 years ago

This is really nice.

Maybe a 3.5 candidate.

#6 follow-up: @ryanve
14 years ago

@kobenland I like the goal of this idea. I also feel that the script/style system is more complex that it needs to be and it needs to be simplified. I think it would be better to implement a more general data method that could be used for many purposes rather than adding a function that only gets used a few times. A function like the example below would be capable of storing data related to scripts/styles and practically anything else. Also (loosely related) see #22249

// Get or set data via key/value pair.
function wp_data ($k = null, $v = null) {

    static $hash; // php.net/manual/en/language.variables.scope.php
    isset($hash) or $hash = array(); // only initiates once

    if ( func_num_args() > 1 )
        return $hash[$k] = $v; // set

    if ( is_scalar($k) ) 
        return $hash[$k]; // get
        
    if ( is_null($k) )
        return $hash; // get all

    return $hash = array_merge($hash, (array) $k); // set multi

}
Last edited 14 years ago by ryanve (previous) (diff)

#7 in reply to: ↑ 6 @obenland
14 years ago

Replying to ryanve:

@kobenland I like the goal of this idea. I also feel that the script/style system is more complex that it needs to be and it needs to be simplified. I think it would be better to implement a more general data method that could be used for many purposes rather than adding a function that only gets used a few times.

I appreciate your feedback! I merely proposed an abstraction of existing functionality though. Maybe it would be a good idea to open a new ticket with what you came up with?

#8 @philiparthurmoore
13 years ago

  • Cc philip@… added

@obenland
13 years ago

This is how Twenty Thirteen could benefit from it.

#9 @obenland
13 years ago

Added patch for Twenty Thirteen.

#10 @dd32
13 years ago

  • Keywords 2nd-opinion removed

Going by the function names in that file, and the add_data() method, the function name here should probably be wp_style_add_data.

Suffice to say, I'm rather surprised that we don't already have the helper function, even more surprised that we used the exact same global access method in Twenty Twelve.

@obenland
13 years ago

#11 @obenland
13 years ago

Updated patch with dd32's feedback. It also applies cleanly now.

#12 @DrewAPicture
13 years ago

  • Cc xoodrew@… added

+1 for adding the wrapper(s).

#13 @obenland
13 years ago

  • Milestone Awaiting Review → 3.6

​Nacin said yesterday it may not be to late for this - I'll move it in 3.6 for commit or punt decision.
I'm available for any alterations or additional patches that are need.

@obenland
13 years ago

@nacin
13 years ago

#14 @nacin
13 years ago

  • Keywords commit 2nd-opinion added

18753.2.diff​ is good to go. Per IRC, leaving Twenty Twelve out of this. It's just more code, not really needed. If it were legitimately easier, I'd argue sure. but it's a function wrapping a method, not even a function rename or something.

#15 @nacin
13 years ago

Pointing out that it avoids the did_action() and new WP_Styles stuff because this is a new function. The original functions simply set up WP_Styles on demand, at any time — we needed to dress it up when we wanted to add_doing_it_wrong() and such. But if this new function gets called too early, it'll simply trigger a fatal error.

#16 @ryan
13 years ago

  • Owner set to ryan
  • Resolution → fixed
  • Status new → closed

In 24740:

Introduce wp_style_add_data() as a wrapper for $wp_styles->add_data().

Props obenland, nacin
fixes #18753

#17 @DrewAPicture
13 years ago

  • Keywords needs-codex added
Note: See TracTickets for help on using tickets.