Uso corretto di wp_is_mobile()?
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...
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.
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