¿Uso correcto de wp_is_mobile()?

20 may 2015, 17:27:37
Vistas: 45.8K
Votos: 23

He desarrollado un tema responsive y quiero enviarlo a wordpress.org. Antes de enviarlo quiero usar wp_is_mobile() en mi tema, pero según la Referencia de Función/wp is mobile es una mala idea porque dice esto:

Debes tener en cuenta que esto no detecta específicamente un teléfono móvil, ya que una tablet es considerada un dispositivo móvil. Revisa el área de Plugins para varias alternativas útiles. Además, no debería usarse para temas.

Entonces si lo uso en mi functions.php del tema de esta manera:

add_filter('body_class','mobile_theme_body_class');     
function mobile_theme_body_class( $classes ){

    if ( wp_is_mobile() ){
        $classes[] = 'mobile'; // agrega clase mobile
    }
    else{
        $classes[] = 'desktop'; // agrega clase desktop
    }
    return $classes;
}

¿Mi tema será rechazado?

Sub-pregunta:

Si uso mi función como en el código anterior y uso Plugins de Caché como (WP Super Cache), ¿mi función se verá afectada (fallará en ejecutarse o devolverá falsos positivos)?

Gracias por su tiempo y respuestas...

7
Comentarios

Están diciendo, tenemos esta función, pero no la uses, porque no es buena - qué ironía tan absoluta. No sé si rechazarían tu tema por usarla, pero si es así, entonces la ironía aumentaría al máximo. Después de todo, es una función de WP y no está obsoleta.

Nicolai Grossherr Nicolai Grossherr
20 may 2015 17:43:19

La verdadera pregunta es por qué quieres añadir la clase móvil/escritorio?

TheDeadMedic TheDeadMedic
20 may 2015 17:44:48

Lo que dice @TheDeadMedic es cierto, puedes trabajar con CSS media queries por ejemplo.

Nicolai Grossherr Nicolai Grossherr
20 may 2015 17:47:27

Ver: http://wordpress.stackexchange.com/a/97906/21376

s_ha_dum s_ha_dum
20 may 2015 17:52:55

wp_is_mobile() no es más que una broma realmente y es muy poco confiable. Depende del lado del usuario que puede ser manipulado por el usuario final. Necesitas saber que tu funcionalidad fallará en más del 10% de los casos, por lo que una gran cantidad de usuarios móviles recibirán contenido de escritorio les guste o no, o tú no lo desees

Pieter Goosen Pieter Goosen
20 may 2015 17:58:23

Así que está ahí y es terrible, al igual que query_posts();

Dejo Dekic Dejo Dekic
20 may 2015 18:06:14

Sip, sinceramente, tu mejor opción aquí son las media queries :-)

Pieter Goosen Pieter Goosen
20 may 2015 18:08:20
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 2
0
34

En términos muy simples, wp_is_mobile() no es para estilizar tu tema.

Cómo funciona: Compara algunos de los nombres nativos de dispositivos en la cadena del Agente de Usuario (User Agent String). Por lo tanto, si alguien manipula la cadena y envía información falsa, no podrás detectar qué dispositivo es. Y no devuelve ningún nombre de dispositivo, solo devuelve true si no estás en un escritorio, de lo contrario devuelve false.

Cómo lo usa WordPress: WordPress no lo usa para estilizar o agregar CSS en ningún lugar. WordPress lo usa para agregar o manipular cosas que deberían estar solo en dispositivos móviles (independientemente del tamaño y nombre). Por ejemplo, para agregar scripts de pantalla táctil, agregar viewport, clase móvil en el encabezado del administrador, agregar botones móviles.

Efecto del almacenamiento en caché: Si usas un plugin de caché, es inútil. Como tu código no se ejecuta cada vez, obtendrás el mismo resultado todo el tiempo.

WordPress principalmente lo usa en el back-end y casi todos los plugins de caché excluyen el almacenamiento en caché en el back-end o para usuarios con sesión iniciada. Así que funciona bien.

20 may 2015 19:31:31
0

wp_is_mobile() detecta el dispositivo basándose en HTTP_USER_AGENT (no está relacionado con el tamaño de pantalla)

wp_is_mobile devuelve verdadero o falso basado en $_SERVER['HTTP_USER_AGENT']

Si $_SERVER['HTTP_USER_AGENT'] contiene Mobile (Android, iOS...) o Tablet, devuelve true, de lo contrario devuelve false
Si $_SERVER['HTTP_USER_AGENT'] es nulo, devuelve false

Para más información revisa el código fuente de la función

24 oct 2017 10:04:03