Uso corretto di wp_is_mobile()?

20 mag 2015, 17:27:37
Visualizzazioni: 45.8K
Voti: 23

Ho sviluppato un tema responsive e voglio inviarlo a wordpress.org. Prima di inviarlo voglio utilizzare wp_is_mobile() nel mio tema, ma secondo la Documentazione di Riferimento/wp is mobile è una cattiva idea perché dice questo:

Dovresti sapere che questo non rileva specificamente un telefono cellulare, poiché un tablet è considerato un dispositivo mobile. Controlla l'area Plugin per diverse alternative utili. Inoltre non dovrebbe essere utilizzato per i temi.

Quindi se lo uso nel mio functions.php del tema in questo modo:

add_filter('body_class','mobile_theme_body_class');     
function mobile_theme_body_class( $classes ){
    // Controlla se il dispositivo è mobile
    if ( wp_is_mobile() ){
        $classes[] = 'mobile';
    }
    else{
        $classes[] = 'desktop';
    }
    return $classes;
}

Il mio tema verrà rifiutato?

Domanda secondaria:

Se uso la mia funzione come nel codice sopra e utilizzo Plugin di Caching come (WP Super Cache), la mia funzione sarà compromessa (fallirà nell'esecuzione o restituirà falsi positivi)?

Grazie per il vostro tempo e le vostre risposte...

7
Commenti

Dicono, abbiamo questa funzione, ma non usatela, perché non è buona - che ironia assoluta. Non so se il tuo tema verrebbe rifiutato per averla usata, ma se così fosse, aumenterebbe l'ironia al massimo. Dopotutto è una funzione di WP e non è deprecata.

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

La vera domanda è perché vuoi aggiungere la classe mobile/desktop?

TheDeadMedic TheDeadMedic
20 mag 2015 17:44:48

Quello che dice @TheDeadMedic è vero, puoi lavorare con CSS media queries per esempio.

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

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

s_ha_dum s_ha_dum
20 mag 2015 17:52:55

wp_is_mobile() non è altro che una barzelletta e davvero inaffidabile. Si basa sul lato utente che può essere manipolato dall'utente finale. Devi sapere che la tua funzionalità fallirà in più del 10% dei casi, quindi una grande quantità di utenti mobile riceverà contenuti desktop che non vogliono o che tu non vuoi fornire

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

Quindi esiste e fa schifo proprio come query_posts();

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

Sì, sinceramente, la tua opzione più sicura qui sono le media queries :-)

Pieter Goosen Pieter Goosen
20 mag 2015 18:08:20
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 2
0
34

In termini molto semplici, wp_is_mobile() non serve per lo stile del tuo tema.

Come funziona: Corrisponde ad alcuni dei nomi nativi del dispositivo nella stringa User Agent. Quindi se qualcuno manipola la stringa e invia informazioni false, non puoi rilevare su quale dispositivo ti trovi. Inoltre non restituisce alcun nome del dispositivo, ma solo true se non sei su desktop, altrimenti false.

Come WordPress lo utilizza: WordPress non lo utilizza per lo stile o per aggiungere CSS da nessuna parte. WordPress lo usa per aggiungere o manipolare elementi che dovrebbero essere presenti solo su dispositivi mobili (a prescindere dalle dimensioni e dal nome). Ad esempio, per aggiungere script touch, viewport, classi mobile nell'header dell'amministrazione, aggiungere pulsanti mobile.

Effetto della cache: Se utilizzi un plugin di caching, è inutile. Poiché il tuo codice non viene eseguito ogni volta, otterrai lo stesso risultato ogni volta.

WordPress lo utilizza principalmente nel back-end e quasi tutti i plugin di caching escludono la cache nel back-end o per gli utenti loggati. Quindi funziona bene.

20 mag 2015 19:31:31
0

wp_is_mobile() rileva il dispositivo basandosi su HTTP_USER_AGENT (non è relativo alla dimensione dello schermo)

wp_is_mobile restituisce vero o falso in base a $_SERVER['HTTP_USER_AGENT']

se $_SERVER['HTTP_USER_AGENT'] contiene Mobile (Android, IOS...) o Tablet restituisce true, altrimenti restituisce false
se $_SERVER['HTTP_USER_AGENT'] è nullo restituisce false

per ulteriori informazioni controlla il codice sorgente della funzione

24 ott 2017 10:04:03