Wordpress wp_is_mobile()函数不工作


Wordpress wp_is_mobile() function not working

我的Wordpress上有一个插件,当用户在移动设备上时,我想阻止它。在我的functions.php中,我添加了一行:

if (wp_is_mobile())
{
    wp_dequeue_script('flare');
    wp_deregister_script('flare');
}

不幸的是,这使得移动和桌面用户都无法加载该脚本。因此,如果他们在移动设备上,我需要找到一种方法来卸载这个脚本。

我在帖子模板中使用了类似的功能,如果在手机上,可以在帖子底部添加常规的共享按钮,但这也不起作用。它为移动和桌面用户添加了共享按钮。

如有任何帮助,我们将不胜感激!

试试这个。。。

if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false
                    || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
                    || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
                    || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
                    || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
                    || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false
                    || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) {
                    //Mobile browser do stuff here       
        } else {
                    //Do stuff here
            }

你好,除了@jay bhatt之外,请检查您的函数.php以获取过滤器

wp_is_mobile

代码可能看起来像

add_filter( 'wp_is_mobile', 'custom_detection_code', 99, 1 );

然后想想Jay bhatt的答案

我认为脚本dequeuing调用应该添加到wp_print_scripts操作挂钩中。

脚本通常在wp_enqueue_script挂钩上排队,这发生在wp_head进程的早期。wp_print_scripts挂钩发生在脚本打印之前。所以我认为你应该这样做:

function deque_my_scripts () {
    wp_dequeue_script('flare');
    wp_deregister_script('flare');
}
if (wp_is_mobile())
{
   add_action('wp_print_scripts','deque_my_scripts');
}

您也可以将动作挂钩添加到wp_enqueue_scripts

所以另一种方法是

if (wp_is_mobile())
{
   add_action('wp_enqueue_scripts','deque_my_scripts', 20);
}

希望这能帮助你:-)