Wie man eine coremethode ändert / erweitert / überschreibt?

Dies ist mein erster Beitrag. Im Voraus, danke, dass du mich aufgenommen hast …

Kontext

Wenn Sie den Stil in die Warteschlange stellen, können Sie Ihren CSS-Link in bedingte Kommentare ausgeben.

global $wp_styles; wp_enqueue_style("my_styles_ie"); $wp_styles->add_data("my_styles_ie", "conditional", "(lt IE 9) & (!IEMobile)"); 

Es wird den folgenden Code erzeugen:

  

Dies geschieht mit der Methode do_item() der class WP_Styles (class.wp_styles.php).

Tor

Ich möchte einen “Antikonditional” -Parameter mit dem Zustandswert hinzufügen …

 $wp_styles->add_data("my_styles_ie", "anticonditional", "(gt IE 8) | (IEMobile)"); 

um dies ausgeben zu können (“verschachtelte Kommentare”):

   <!-- 

Ich habe über “wie man coremethode ändern” gesucht, aber ich fand keine Lösung … 🙁

Im Moment kann ich es mit einem Haken machen, aber es gibt keine “Argumente”. Stylesheet und Bedingung sind fest codiert …

 function antiConditionnal($tag, $handle) { if('my_styles' == $handle) $tag = '' . "\n" . $tag . '<!--' . "\n"; return $tag; } add_filter( 'style_loader_tag', 'antiConditionnal', 10, 2); 

Dies ist hauptsächlich für mich eine Gelegenheit, mein Wissen zu verbessern und tiefer in WordPress einzutauchen!

Irgendeine Idee?

Vielen Dank…

tm

Solutions Collecting From Web of "Wie man eine coremethode ändert / erweitert / überschreibt?"

Es gibt bereits eine ähnliche Antwort von Toscho hier . Basierend auf diesem und einem Blick auf WP_Styles , der WP_Dependencies und _WP_Dependency , kann ich keinen Grund sehen, warum es nicht funktionieren sollte:

Was als extraconditional hinzugefügt wurde, wird hineingeworfen:

 // ~/wp-includes/class.wp-styles.php if ( isset($obj->extra['conditional']) && $obj->extra['conditional'] ) { $tag .= "\n"; } 

_WP_Dependency definiert add_data() folgt:

 function add_data( $name, $data ) { if ( !is_scalar($name) ) return false; $this->extra[$name] = $data; return true; } 

und WP_Dependencies definiert add_data() wie add_data() :

 function add_data( $handle, $key, $value ) { if ( !isset( $this->registered[$handle] ) ) return false; return $this->registered[$handle]->add_data( $key, $value ); }