Wie man einen anderen Titel auf die Seite zurückgibt, wenn er auf einem Android-Handy geöffnet ist

Wie kann ich der Seite einen anderen Titel geben, wenn sie auf einem Android-Handy geöffnet ist?

Ich habe diese function, die überprüft, ob es ein Android ist:

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; } } 

Und ich kann die Aussage verwenden:

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

Aber das funktioniert nicht. Es verhindert, dass meine Seite geladen wird.

Ich habe versucht, die if statement auf der Vorlage zu schreiben (header.php im Tag) und ich habe das gleiche Ergebnis erhalten.

Irgendwelche Vorschläge ?

Bearbeiten:

Ich benutze das TwentyFifteen-Kind-Thema, das ich gemacht habe.

Ich habe versucht, diesen Code Teil zu function.php eingefügt von der Kommentator @birgire vorgeschlagen:

 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 ); 

Er testete es auf seinen Standardthemen 2012 & 2015 und es funktionierte für ihn!

Es funktionierte jedoch nicht für mich, also versuchte ich mit is_home statt is_front_page() , nichts änderte sich.

Ich habe versucht, diese Zeile zu entfernen und verließ nur den HTTPS_USER_AGENT , hat auch nicht funktioniert.

Wir haben $_SERVER['HTTP_USER_AGENT'] mit folgendem $_SERVER['HTTP_USER_AGENT'] getestet:

 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; } } ); 

und es hat funktioniert. Ich habe die richtige Ausgabe beim Ausführen von example.tld/?wpse_show_ua=1 :

Mein Benutzer-Agent: Mozilla / 5.0 (Linux; Android 4.4.2; SM-G900F Aufbau / KOT49H) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 43.0.2357.93 Mobile Safari / 537.36

Wir haben die functionalität der if Statements getestet und richtig verstanden:

 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; } } ); 

Auf einem Handy “ist ein Android” und auf dem Desktop “kein Android!”.

Das Problem besteht also tatsächlich darin, den neuen Wert des Titels zu senden!

Wenn diese function ausgeführt wird:

 add_filter( 'wp_title', function( $title ) { if( filter_input( INPUT_GET, 'wpse_show_ua', FILTER_SANITIZE_NUMBER_INT ) ) { return 'Testing 123'; } return $title; }, 11 ); 

und indem ich example.tld/?wpse_show_ua=1 eingib, bekomme ich meine normale Website-Anzeige ohne Änderungen im Titel!

Und wieder – dies funktionierte auf den Kommentaren Standard Twenty Twelve und TwentyFifteen Themes.

Meine Vermutung ist, dass es wegen des installierten Plugins (Yoast SEO) ist. aber ich weiß wirklich nicht, warum das passiert.

Solutions Collecting From Web of "Wie man einen anderen Titel auf die Seite zurückgibt, wenn er auf einem Android-Handy geöffnet ist"

Ich bin mir nicht sicher, woher diese php_browser_info() function kommt.

Sie können stattdessen Folgendes versuchen:

 /** * 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 ); 

um den Titel der Titelseite zu ändern. Hier verwenden wir eine Änderung der Android- Überprüfung von der wp_is_mobile() -function, also bitte beachten Sie, dass diese Erkennung möglicherweise nicht so genau ist!