Es ist wohl am besten, die header.php sauber zu halten und den Shim aus der functions.php-Datei einzufügen.
// add ie conditional html5 shim to header
function add_ie_html5_shim () {
echo '<!--[if lt IE 9]>';
echo '<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>';
echo '<![endif]-->';
}
add_action('wp_head', 'add_ie_html5_shim');
Der Shim soll es HTML5-Elementen ermöglichen, in Internet Explorer-Versionen vor Version 9 per CSS gestylt zu werden.
Ähm, ich sehe nicht, warum das besser ist, als es in die header.php zu packen. Man könnte genauso gut argumentieren, dass es in die header.php gehört, um die functions.php sauber zu halten, oder? Gibt es bei einer der Methoden Leistungsvorteile? Gibt es Vorteile (in Bezug auf Workflow, „Sauberkeit“, Leistung oder anderes) bei dieser Vorgehensweise?
Ein Vorteil, den ich sehe, wäre, eine „Vorlage“ für die functions.php zu haben, mit Dingen, die man immer in jeder Website haben möchte, einschließlich des Shims (wäre es sinnvoll, Modernizr usw. auf diese Weise zu haben? Oder könnte das Probleme verursachen?). Gibt es noch andere Gründe?
Am Rande bemerkt: In welcher Reihenfolge werden all die add_action(„wp_head“, „whatever“) Dinge eigentlich ausgegeben? In der Reihenfolge, in der sie im Quellcode stehen? Was ist mit Plugin-Sachen, wie wird diese Reihenfolge bestimmt? Ich stelle mir vor, dass das woanders beantwortet wurde…
add_action akzeptiert einen dritten Parameter für die Priorität, wenn Sie ordnen müssen, was in welcher Reihenfolge hinzugefügt wird, ungeachtet ihrer Platzierung in der Quellcode-Reihenfolge.
Danke für diesen Tipp, Chris. Ich hätte vorher nachschauen sollen, bevor ich frage.. :)
Was ist mit meinen anderen Fragen? Gibt es Leistungsvorteile (oder andere)?
Ich mag meine functions.php-Vorlagenidee; ich fange sofort damit an.. :)
Ich bin auch neugierig, warum es besser ist, dies in die functions.php anstatt in die header.php zu setzen. Ist es nur eine Workflow-Präferenz für Sie? Oder gibt es einen spezifischen Vorteil?
Es ist besser, es in die functions.php-Datei zu setzen, weil Sie, wie erwähnt, die Priorität auf diese Weise mit Code steuern können. Das kann bei Plugins und umfangreichen Anpassungen und widersprüchlichen Codebasen wichtig werden.
Ich halte meine functions.php sauber, indem ich einen komplett neuen Ordner „lib“ erstelle, der meine Theme-Bibliothek speichert, was im Wesentlichen alle Snippets und Codes sind, auf die ich gestoßen bin und die ich immer wieder verwende.
In den letzten 2 Jahren ist sie von ein paar Dateien zu Unterordnern mit Dateien darin angewachsen, es ist jetzt ein Mini-Framework, das häufig verwendete Funktionen hinzufügt.
Da wir PHP verwenden, sollten wir IE nicht mit der integrierten globalen Variable $is_IE von WordPress wie folgt erkennen?
Gute Idee, aber das fügt das Skript auch für IE9-Benutzer hinzu, was unnötig ist.
Warum nicht SOWOH die $is_ie-Variable als auch bedingte CSS verwenden, um den Code in Webkit/Gecko-Browsern sauber zu halten? ;)
Verbesserung von Frankies Code –
// IE-bedingten HTML5-Shim zum Header hinzufügen
function add_ie_html5_shim () {
global $is_IE;
if ($is_IE)
echo ‘‘;
echo ”;
echo ”;
}
add_action(‘wp_head’, ‘add_ie_html5_shim’);
Ich stimme Brians Methode zu. Auf diese Weise wird der Shim nicht jedes Mal einbezogen, wenn ein anderes Plugin ihn benötigt. Ich denke, die register_script-Methode wäre die beste Methode, um den Code sauber zu halten.
Was ist mit wp_enqueue_script? Ist das nicht der beste Weg, um Skripte hinzuzufügen? Ich sehe, wie man es nur für IE hinzufügt, aber weiß WordPress auch die Version, damit ich es nur für if lt 9 hinzufüge?
Ich habe ein seiten-spezifisches Plugin, das ich anstelle von functions.php verwende. Wird es den gleichen Effekt haben, wenn ich diesen Code dort verwende? Oder kommt die Sache mit der Priorität nur mit functions.php? :O
Ich denke, es kommt aus functions.php
Ein Grund, dies in einer functions-Datei jeglicher Art zu tun, ist, dass Plugins die `header.php` des Themes nicht ändern können, sie können sich nur daran hängen.
Außerdem, @evan, ist `wp_enqueue_script()` eine bewährte Methode, aber es gibt keine Möglichkeit, sie beim Testen von IE-Versionen zu verwenden, sodass wir zwischen Hammer und Amboss stecken.
Könnte dies nicht den Trick tun?
@Matthew
Das ist der Code, den ich gerade zu meinem aktuellen Projekt hinzugefügt habe.
Da wir uns nur auf IE8 und darunter konzentrieren, habe ich den Regex auf nur 1-8 geändert, sowie großgeschrieben und das Flag „case ignore“ hinzugefügt (redundant, aber man weiß ja nie).
Danke an alle für die Hilfe.
Ich glaube nicht, dass das mit einem der aktiven Caching-Plugins funktioniert (z.B. W3 Total Cache).
Es wird viele Websites auf **FireHost & Pagely mit W3TC** laufen lassen. Ich war angenehm überrascht von seiner Fähigkeit, mit solchen Dingen umzugehen.
`> PS
Ich sollte Ihnen sagen, dass ich für das „Fragment-Caching“ bezahlt habe, weil ich Genesis benutze, es ist schneller, aber Sie können auch direkten Zugriff auf W3TC erhalten und dort liegt der Wert. Fragen Sie, bevor Sie kaufen.
function add_ie_html5_shim () {
echo ‘<!–[if lt IE 9]>’;
echo ‘<script src=”http://html5shim.googlecode.com/svn/trunk/html5.js”></script>’;
echo ‘<![endif]–>’;
}
if ($GLOBALS[‘is_IE’]) {
add_action(‘wp_head’, ‘add_ie_html5_shim’);
}
Hilf mir!
Was ist der Unterschied zwischen SHIM und SHIV?
Nichts. Nur eine seltsame Vermischung von Worten.
Hallo, wie kombiniert man bedingte Kommentare in WordPress 4.x?
Zu
<!–[if lt IE 9]>
<![endif]–