Question

I am using the following function in PHP to detect the user agent and display or hide revolution slider based on whether or not the useragent mobile. The issue I am having is this:

When I use the w3c mobile ok checker, it is still loading all of the assets including revolution slider, which properly hides on a real mobile device and shows properly in a desktop browser with respect to this code:

  // Only show slider on Desktop Home Page
  $is_mobile=userAgent('mobile');
  if (is_front_page() && !$is_mobile) {  
    putRevSlider("homepage","homepage"); 
  } 

My assumption is that w3c checker is either

A) not using in the userAgent function or

B) It is simply pulling the desktop version and running the tests against it. For reference, here is the userAgent function that I am using:

// Detect if Mobile User Agent
function userAgent($type = NULL) {
    $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    if ($type == 'mobile') {
        if (preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i', $useragent) || preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i', substr($useragent, 0, 4))) {
            return true;
        }
    }
    return false;
}

Which brings me to my question(s):

  1. How exactly does w3c handle the page request and is there a way to determine if the page is being requested via the w3c checker (or similar service)

  2. Is there a better way to prevent Revolution slider from loading on mobile devices (other than the settings in the slider, found that to not be 100% reliable)

No correct solution

OTHER TIPS

1. How exactly does w3c handle the page request and is there a way to determine if the page is being requested via the w3c checker (or similar service)

The preg_match in your code includes w3c. Did you confirm whether the assets load anyway when you visit your site from a mobile device? Perhaps the assets aren't configured to load only when the slider is called.

2. Is there a better way to prevent Revolution slider from loading on mobile devices (other than the settings in the slider, found that to not be 100% reliable)

Have you looked into wp_is_mobile() ? You should be able to stop the slider from loading by checking whether wp_is_mobile() returns false for a user visiting from a non-mobile device. If it's the other way around and the user's visiting from a mobile device, the call to the slider shouldn't be invoked and none of the assets should be called either.

While assets are one thing, to just hide the slider in general, CSS is another option. The plugin author suggests utilizing "Hide Slider Under Width" if you want a solution via settings, but you mentioned that the settings aren't reliable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top