WordPress.org

Ready to get started?Download WordPress

Forums

Keep header when switching theme (4 posts)

  1. tonny@debug.dk
    Member
    Posted 1 year ago #

    Hey

    Im trying to do a plugin that will keep the users header after theme change. So far i come up with this.

    <?php 
    
    add_action('pre_update_option_theme_mods_' . get_option( 'stylesheet' ), save_header_image_as_option);
    add_action('switch_theme', 'keep_header'); 
    
    error_log("stylesheet " . get_option( 'stylesheet' ),0);
    error_log("prevous header " . get_option( 'previous_header_image_saved' ),0);
    
    function save_header_image_as_option()
    {
    	$details_before = get_theme_mods($blog_id);
    	update_option("previous_header_image_saved", get_theme_mod('header_image'));
    	error_log("before theme change" . json_encode($details_before), 0);
    	return $details_before;
    }
    
    function keep_header()
    {
    	$details_after = get_theme_mods($blog_id);
    	set_theme_mod('header_image', get_option("previous_header_image_saved"));
    	error_log("after theme change" . json_encode($details_after), 0);
    	return $details_after;
    }
    
    ?>

    Sadly it does not work, because the trigger is also triggede when trying to CHANGE the header. Any suggestion on how to accomplish to keep header when changing themes ?

  2. Arun Basil Lal
    Member
    Posted 1 year ago #

    Hey Tony,

    Have you figured it out somehow? If so would appreciate how you did that. Thanks!

  3. tonny@debug.dk
    Member
    Posted 1 year ago #

    Nope still no solution sadly.

  4. tonny@debug.dk
    Member
    Posted 1 year ago #

    Ended up with this:

    <?php
    /**
     * @package Preserve_Header_Image
     * @version 1.0
     */
    /*
    Plugin Name: Preserve_Header_Image
    Plugin URI: http://bloggersdelight.dk/
    Description: Preserve header image between stylesheet (theme) switchings.
    Version: 1.0.0
    Author: Nikolaj Jørgensen
    Author URI: http://bloggersdelight.dk/
    License: GPLv2 or later
    */
    
    add_action('pre_update_option_stylesheet', 'phi_pre_update_option_stylesheet');
    add_action('switch_theme', 'phi_switch_theme');
    
    function phi_pre_update_option_stylesheet($stylesheet)
    {
            update_option('previous_header_image_saved', get_theme_mod('header_image'));
    
            return $stylesheet;
    }
    
    function phi_switch_theme()
    {
            if (get_option('previous_header_image_saved')) {
                    set_theme_mod('header_image', get_option('previous_header_image_saved'));
                    delete_option('previous_header_image_saved');
            }
    }
    ?>

Topic Closed

This topic has been closed to new replies.

About this Topic