• Copied from:
    http://wordpress.stackexchange.com/questions/192242/how-to-echo-a-different-title-to-the-page-if-its-opened-on-an-android-mobile-ph/192246?noredirect=1#comment280412_192246

    How do I echo a different title to the page if it’s opened on an android mobile phone?
    I have this function that checks if it’s an 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;
        }
        }

    And I can use the statement:

    add_action( 'init', 'change_title_if_android');
            function change_title_if_android() {
    
            	if ( is_front_page() &&  is_android() ){
        echo "<title> test android </title>";
        }
    
            }

    But this doesn’t work.
    It prevents my page from loading.

    I tried writing the if statement on the template too (header.php in the <head> tag) and I got the same result.

    Any suggestions ?

    https://wordpress.org/plugins/wordpress-seo/

    EDIT:

    I used this in functions.php and i didnt get any output.
    My friend used this on his default 2015theme and it worked for him.

    /**
    	Change Title only if is_android()
    **/
    add_filter( 'wp_title', function( $title )
    {
        return
            is_home()
            && isset( $_SERVER['HTTP_USER_AGENT'] )
            && false !== stripos( $_SERVER['HTTP_USER_AGENT'], 'android' )
            ? 'Test Android'
            : $title;
    }, 11 );

    EDIT2:

    and i tried a hole bunsh of other things while talking to a friend:

    Pasted this code part to functions.php and it’s not working

    birgire
    birgire
    I just tested this on my Android phone and it worked. I guess you are not using a static front page? Try to replace is_front_page() with is_home() @ElectricWizard

    ElectricWizard
    ElectricWizard
    It’s a template that i made a homepage. It’s not working for me, i tried more than 1 android mobile phone :'(

    birgire
    birgire
    what if you remove the is_front_page() part while testing? @ElectricWizard

    ElectricWizard
    ElectricWizard
    897
    i get a blank page O_O
    oh i didnt remove the &&. I just get the page regularly. no changes.
    add_filter( ‘wp_title’, function( $title ) { return isset( $_SERVER[‘HTTP_USER_AGENT’] ) && false !== stripos( $_SERVER[‘HTTP_USER_AGENT’], ‘android’ ) ? ‘Test Android’ : $title; }, 11 );

    birgire
    birgire
    15:43
    What kind of string does it contain for your Android phone? There are also many online services that can show it easily. Or maybe your $_SERVER[‘HTTP_USER_AGENT’] isn’t defined? You could also check out PHP libraries out there with better Android detection. @ElectricWizard

    ElectricWizard
    ElectricWizard
    well, i tested it on 4 different android mobiles, i need something that is more accurate. any other way?
    Do i have to add something like this to my header.php file? <title><?php wp_title(‘|’, true, ‘right’); ?></title>

    birgire
    birgire
    yes, try for example the default Twenty* themes first. @ElectricWizard

    ElectricWizard
    ElectricWizard
    יקט
    hey

    birgire
    birgire
    hi, did you try this on a default theme?

    ElectricWizard
    ElectricWizard
    I have a child theme of twentyfifteen.
    I cant change it since it’s an official big website.

    birgire
    birgire
    27.7k
    15:53
    let’s check your current user agent string
    try for example:
    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;
    }
    } );

    ElectricWizard
    ElectricWizard
    i get no output on the page

    birgire
    birgire
    in your functions.php file and you can activate it through example.tld/?wpse_show_ua=1

    ElectricWizard
    ElectricWizard
    on WP i didnt get nothing
    using this url i got:
    My User Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36

    birgire
    birgire
    ok it looks like the string is available and it contains the “Android” word

    ElectricWizard
    ElectricWizard
    897
    so why isn’t it working for me :S
    Do i have to add something to my functions.php file?
    any global vars
    add something to the <head> tag?

    birgire
    birgire
    27.7k
    16:01
    try now:
    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!’;
    endif;
    exit;
    }
    } );

    ElectricWizard
    ElectricWizard
    saved.
    it’s not echoing anything.
    Where should the output be displayed?

    birgire
    birgire
    now check again example.tld/?wpse_show_ua=1
    this should show “is an Android!” or “not and Android!”

    ElectricWizard
    ElectricWizard
    is an Android

    birgire
    birgire
    yes 😉
    and what gives the normal desktop browser?

    ElectricWizard
    ElectricWizard
    So i uderstand that it does recognize it right.
    and the the problem is actually getting the “test android” isn’t the thing that working. am i right?
    “not an Android!” for the desktop browser

    birgire
    birgire
    16:06
    so now the problem is not the detection but the title

    ElectricWizard
    ElectricWizard
    897
    There’s an seo plugin on the website.
    I now remember :O !

    can this be the cause?
    yoast seo plugin

    birgire
    birgire
    27.7k
    yes that’s possible
    try for example:
    add_filter( ‘wp_title’, function( $title )
    {
    return ‘Testing 123’;
    }, 11 );
    wait

    ElectricWizard
    ElectricWizard
    no change in the desktop title for this one.

    birgire
    birgire
    27.7k
    try this instead:
    add_filter( ‘wp_title’, function( $title )
    {
    if( filter_input( INPUT_GET, ‘wpse_show_ua’, FILTER_SANITIZE_NUMBER_INT ) )
    {
    return ‘Testing 123’;
    }
    return $title;
    }, 11 );
    so we don’t modify the current title’s
    and test it with the same test url
    example.tld/?wpse_show_ua=1
    if this doesn’t change the title of the page, try to change 11 to PHP_INT_MAX

    ElectricWizard
    ElectricWizard
    897
    i oened
    example.tld/?wpse_show_ua=1
    and i got my regular website
    (with no changes in the title if there should have been..)

    birgire
    birgire
    16:17
    this worked on my default TwentyTwelve theme

    ElectricWizard
    ElectricWizard
    so what can be the problem :S

    birgire
    birgire
    27.7k
    16:29
    works also on the TwentyFifteen theme
    hard to say, could be a plugin like the Yoast or something else in your theme that’s interfering
    you should create a dev.example.tld site
    where you can play around with your site

    ElectricWizard
    ElectricWizard
    yes that’s right..
    I made one localy but it doesn’t really help when you have stuff like mobile testing :S

  • The topic ‘How to echo a different title to the page if it's opened on an android mobile ph’ is closed to new replies.