【问题标题】:Redirect user to wordpress category based on user-agent基于用户代理将用户重定向到wordpress类别
【发布时间】:2019-02-14 04:30:27
【问题描述】:

我试图使用 nginx 以及 wordpress index.php 中的 php 标头重定向来实现这一点,但我总是发现自己处于无限循环中。

我只想将 iphone 用户重定向到我的 wordpress 页面的 /category/iphone/ 或 android 用户到 /category/android/。

这可能吗?

感谢您的帮助!

编辑: 也许我并不完全清楚。如果他来到 INDEX/MAIN 页面,我只想重定向用户。他仍然可以浏览其他类别而无需将他重定向到 iphone/android 类别。

【问题讨论】:

    标签: php wordpress nginx


    【解决方案1】:

    此 if 语句将允许您使用以下方法之一检测 iOS 和移动设备访问者:

    if( stristr($_SERVER['HTTP_USER_AGENT'],'ipad') ) {
            $device = "ipad";
        } else if( stristr($_SERVER['HTTP_USER_AGENT'],'iphone') || strstr($_SERVER['HTTP_USER_AGENT'],'iphone') ) {
            $device = "iphone";
        } else if( stristr($_SERVER['HTTP_USER_AGENT'],'blackberry') ) {
            $device = "blackberry";
        } else if( stristr($_SERVER['HTTP_USER_AGENT'],'android') ) {
            $device = "android";
        }
    
        if( $device ) {
            return $device; 
        } return false; {
            return false;
        }
    }
    

    即使您可以使用 .htaccess 文件,例如:

    RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$
    RewriteRule ^(.*)$ http://www.yoururl.com [R=301]
    

    在你的functions.php文件中:

        add_action( 'template_redirect', 'device_redirect' );
    
        function device_redirect(){
          if ( is_front_page() && is_home() ) {
            if( stristr($_SERVER['HTTP_USER_AGENT'],'iphone') || strstr($_SERVER['HTTP_USER_AGENT'],'iphone') ) {
                    wp_redirect( "http://www.example.com/iphone", 301 );
            } else if( stristr($_SERVER['HTTP_USER_AGENT'],'android') ) {
                   wp_redirect( "http://www.example.com/andriod", 301 );
            }
         }
       }
    

    如果您使用静态主页或博客页面,则必须更改 if。 例如

    if ( is_front_page() && is_home() ) {
    // Default homepage
    }
    
    if ( is_front_page()){
    //Static homepage
    } 
    
    if ( is_home()){
    //Blog page
    }
    

    【讨论】:

    • 感谢您的回答,但我知道如何使用 php 或 nginx 检测设备,我只是不知道如何将它们重定向到 wordpress 环境中的类别,因为 wordpress 通过 index.php 运行所有文件.
    • 如果你把我添加的最后一块放在你模板的functions.php中,那么它应该可以工作。
    • 我已经添加了你的建议,但是如果我现在刷新这个类别,我会得到无限循环。而且我无法浏览任何其他类别,因为它总是将我重定向到 iphone 类别。我只想重定向主页。谢谢!
    • 我添加了一个 if 所以我想它现在可以工作了,我现在无法测试它
    猜你喜欢
    • 2014-03-13
    • 2016-03-14
    • 1970-01-01
    • 2012-01-11
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多