如果在Android手机上打开页面,如何在页面上回显不同的标题

时间:2015-06-22 作者:Kar19

如果页面是在android手机上打开的,我该如何为页面回显不同的标题?

我有一个功能可以检查它是否是android:

function is_android (){
    $browserInfo = php_browser_info();
    if (preg_match("/Android/", $browserInfo[\'browser_name_pattern\'], $matches)) {
        if ($version == \'\') :
            return true;
        elseif ($browserInfo[\'majorver\'] == $version ) :
            return true;
        else :
            return false;
        endif;
    } else {
        return false;
    }
}
我可以使用以下语句:

    add_action( \'init\', \'change_title_if_android\');
    function change_title_if_android() {
        if ( is_front_page() &&  is_android() ){
            echo "<title> test android </title>";
        }
    }
但这行不通。它阻止加载我的页面。

我试着写if 模板上的语句(标记中的header.php)和我得到了相同的结果。

有什么建议吗?

Edit:

我使用了我制作的215个儿童主题。

我尝试粘贴此代码部分以发挥作用。birgire评论员建议的php:

add_filter( \'wp_title\', function( $title )
{
    return
        is_front_page()
        && isset( $_SERVER[\'HTTP_USER_AGENT\'] ) 
        && false !== stripos( $_SERVER[\'HTTP_USER_AGENT\'], \'android\' )
        ? \'Test Android\'
        : $title;
}, 11 );
他在2012年&;2015年默认主题,这对他很有用!

但它对我不起作用,所以我尝试使用is_home 而不是is_front_page(), 没有任何变化。

我试图删除这条线,只留下HTTPS_USER_AGENT, 也不起作用。

我们进行了测试$_SERVER[\'HTTP_USER_AGENT\'] 使用此选项:

add_action( \'template_redirect\', function()
{
    if( filter_input( INPUT_GET, \'wpse_show_ua\', FILTER_SANITIZE_NUMBER_INT ) )
    {
        printf( \'My User Agent: %s\', $_SERVER[\'HTTP_USER_AGENT\'] );
        exit;
    }
} );
它成功了。我在运行时获得了正确的输出example.tld/?wpse_show_ua=1 :

我的用户代理:Mozilla/5.0(Linux;Android 4.4.2;SM-G900F Build/KOT49H)AppleWebKit/537.36(KHTML,如Gecko)Chrome/43.0.2357.93 Mobile Safari/537.36

我们测试了if 声明并正确无误:

add_action( \'template_redirect\', function()
{
    if( filter_input( INPUT_GET, \'wpse_show_ua\', FILTER_SANITIZE_NUMBER_INT ) )
    {
        if ( 
               isset( $_SERVER[\'HTTP_USER_AGENT\'] ) 
            && false !== stripos( $_SERVER[\'HTTP_USER_AGENT\'], \'android\' ) 
        )
            echo \'is an Android!\';
        else
            echo \'not an Android!\';
        exit;
    }
} );
在手机上“是Android”,在桌面上“不是Android!”。

所以问题实际上是发送标题的新值!

运行此功能时:

add_filter( \'wp_title\', function( $title )
{
    if( filter_input( INPUT_GET, \'wpse_show_ua\', FILTER_SANITIZE_NUMBER_INT ) )
    {
        return \'Testing 123\';
    }
    return $title;
}, 11 );
和进入example.tld/?wpse_show_ua=1 阿甘,我得到了我的定期网站显示没有改变标题!

同样,这对评论者默认的212和215主题有效。

我猜这是因为安装了插件(Yoast SEO)。但我真的不知道为什么会这样。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

我不知道这个在哪里php_browser_info() 函数来自。

您可以尝试以下操作:

/**
 * Modify the front/home page title for Android devices
 */
add_filter( \'wp_title\', function( $title )
{
    return
        ( is_front_page() || is_home() )
        && isset( $_SERVER[\'HTTP_USER_AGENT\'] ) 
        && false !== stripos( $_SERVER[\'HTTP_USER_AGENT\'], \'android\' )
        ? \'Test Android\'
        : $title;
}, PHP_INT_MAX );
修改首页标题。这里,我们使用对Android检查的修改wp_is_mobile() 函数,因此请注意,此检测可能没有那么准确!

结束