Switching theme through code WordPress

Is it possible to switch the WordPress theme programmaticly? For example when there is a certain browser (found a plugin to detect that) that another theme is used?

I want to be able to give outdated browsers (IE7 and lower, lower than Saf and FF 3 e.d.) and mobile browsers a different theme than the other browsers.

Read More

I found the method switch_theme however that does not do the thing I expect (I get an blank error when I call this in functions.php) like

switch_theme('twentyten', 'stylesheet');

Or am I using this method wrong?

Related posts

Leave a Reply

2 comments

  1. Had you searched WordPress StackExchange, you would have found this:

    add_filter( 'template', 'wpse_49223_change_theme' );
    add_filter( 'option_template', 'wpse_49223_change_theme' );
    add_filter( 'option_stylesheet', 'wpse_49223_change_theme' );
    
    function wpse_49223_change_theme($theme) 
    {
        if ( wp_is_mobile() ) 
            $theme = 'twentyten';
    
        return $theme;
    }
    

    wp_is_mobile is a built-in WordPress function, reproduced bellow:

    function wp_is_mobile() {
        static $is_mobile;
    
        if ( isset($is_mobile) )
            return $is_mobile;
    
        if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
            $is_mobile = false;
        } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
            || 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 ) {
                $is_mobile = true;
        } else {
            $is_mobile = false;
        }
    
        return $is_mobile;
    }