[wp-hackers] please help me to resolve this error (theme changing problem)

Khaleel Abdul Karim webmaster887 at gmail.com
Fri Apr 23 15:57:23 UTC 2010


Below listing contains a plugin which i have written.. the task of this
plugin is to allow publisher to select a theme while posting a page and the
page (only the page ) will be displayed in the selected theme . But i'm not
getting the complete functionality. I got the styles changed but the page
template is still not changing . I found this feature in heaspace2 plugin
and themeswitcher. but i'm trying to develop my own simple plugin. As i'm
new to wordpress i could not solve this from the past 3 days . Please anyone
help me to fix this ..

<?php
/*
Plugin Name: ThemeSelect_OOPS_NEw
Plugin URI:
Description: This will allow admin chose a theme for a new page
Version: 0.0.1
Author:
Author URI:
License: GPL
*/
class ThemeSelect
{
    function ThemeSelect()
    {
        add_action('admin_menu',array(&$this,'add_theme_box'));
        add_action('save_post',array(&$this,'save_theme'));
        add_filter('template', array(&$this,'get_post_template'),1);
        add_filter('stylesheet', array(&$this,'get_post_stylesheet'),1);
    }
    function add_theme_box() /* Adds a custom field to set theme */
    {
    if( function_exists( 'add_meta_box' ))
    {
        add_meta_box( 'theme', 'Select Theme',
'show_theme_selector','page','normal', 'high');
    }
    }
    function show_theme_selector($post)  /* Loads the select menu for the
theme selector*/
    {
        $themes=get_themes();
        $postid=$post->ID;
        if(get_post_meta($postid,'theme',true))
        $default_theme=get_post_meta($postid,'theme',true);
        echo "<select name=\"thm\">";
        foreach($themes as $theme)
        { ?>
            <option value="<?php echo $theme['Name']; ?>" <?php
if($default_theme==$theme['Name']) echo "selected=\"selected\""; ?>> <?php
echo $theme['Title']; ?> </option>
    <?php   }
        echo "</select>";
    }
    function save_theme($postid)
    {
        if(isset($_POST['thm']))
        {
            $themedata = $_POST['thm'];
            //if(get_post_meta($postid,'theme', true)=="")
            //{
            //    add_post_meta($postid,'theme',$themedata);
            //}
        //    else
        //    {
            update_post_meta($postid,'theme',$themedata);
        //    }
    }
}

function get_post_template($template='')
{
    global $post;
    $sel_theme = get_post_meta($post->ID, 'theme', true);
    if(!empty($sel_theme))
    {
        $theme=get_theme($sel_theme);
        $template = stripslashes($theme['Template']);
        //$template=get_theme_root()."/{$template}/page.php";
    }
    return $template;
}


 function get_post_stylesheet($stylesheet='')
 {
     global $post;
     $sel_theme = get_post_meta($post->ID, 'theme', true);
     if(!empty($sel_theme))
     {
         $theme=get_theme($sel_theme);
         $stylesheet = stripslashes($theme['Stylesheet']);
     }
     return $stylesheet;
 }
}
$theme_select=new ThemeSelect();
?>

-- 
~~~~~~~~~~~~~~~~~~

Khaleel Abdul Karim
Thazhathuveedu
Erumely


More information about the wp-hackers mailing list