it-swarm.com.de

Useragent zur Body-Klasse hinzufügen?

Ich suche nach einer Möglichkeit, Körperklasse abhängig vom User Agent des Clients mit PHP hinzuzufügen.

Ich versuche es so umzusetzen:

page.php:

<body id="front" <?php ( function_exists ( 'body_class' ) : body_class($classes) ? NULL ); ?> >

Oder indem Sie es der Datei functions.php hinzufügen

Zu Ihrer Information: Der ganze Zweck ist es, bestimmte mobile Stile auszuloten und Javascript für einige mobile Benutzeragenten zu deaktivieren.

p.s. Ich suche kein Handy-Plugin.

p.p.s. Nein, ich bin nicht daran interessiert, ein mobiles Thema zu verwenden.

4
chrisjlee

so etwas vielleicht:

function my_class_names($classes) {
    $useragent = $_SERVER['HTTP_USER_AGENT'];
    if(strchr($useragent,'Safari')) $classes[] = 'Safari';
    // etc..
    return $classes;
}
add_filter('body_class','my_class_names');

Bearbeiten - Nach dem Vorschlag von Chip, hier ist die Funktion, die die Prüfungen der WordPress-Useragents verwendet:

function my_class_names($classes) {
    global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;
    if($is_lynx) $classes[] = 'lynx';
    elseif($is_gecko) $classes[] = 'gecko';
    elseif($is_winIE) $classes[] = 'winIE';
    elseif($is_macIE) $classes[] = 'macIE';
    elseif($is_opera) $classes[] = 'opera';
    elseif($is_NS4) $classes[] = 'NS4';
    elseif($is_safari) $classes[] = 'safari';
    elseif($is_chrome) $classes[] = 'chrome';
    elseif($is_iphone) $classes[] = 'iphone';
    else $classes[] = 'other';
    return $classes;
}
add_filter('body_class','my_class_names');
6
Milo

WordPress enthält globale Variablen, in denen einige dieser Benutzeragenten gespeichert sind. Vielleicht so etwas:

<?php
global $is_iphone;

$classes = array();

if ( $is_iphone ) $classes[] = 'iphone';
?>
<body id="front" <?php body_class( $classes ); ?>>

(Warum bindest du body_class() in function_exists() ein? Dieses Tag benötigt im Allgemeinen keine Abwärtskompatibilität, wie es in WordPress 2.8 eingeführt wurde.)

1
Chip Bennett

Verwenden Sie Medienabfragen . Wenn Sie Ihre Ausgabe in Abhängigkeit vom Benutzerprogramm ändern, müssen Sie Proxy-Caches nicht zulassen, und selbst das Zwischenspeichern in lokalen statischen Dateien wird unnötig schwierig. Und vergessen Sie nicht, einen Header mit dem Namen Vary: User Agent zu senden. Dadurch wird die Ladezeit Ihrer Website in jedem Browser verlangsamt .

Siehe auch: Verwenden von CSS3-Medienabfragen zum Erstellen einer mobilen Version Ihrer Website .

1
fuxia