I have a client site that requires a random background image. I figured that custom-background would have something similar to custom-header for randomizing which image is selected, but alas it does not seem to be the case.

Does anyone have experience doing this, or know what direction would be best to extend custom-background? Or would the better approach be to ignore custom-background and create my own background theme support (I severely frown upon this method, but 'the easy route' is always there).

2 Answers 2


I created a theme like this sometime ago using backstretch script http://srobbin.com/jquery-plugins/backstretch/ very light and easy to set.

But note that if you want to allow the user/client to change/order the images you will need to create a theme panel/options.

  • Thanks for the link! So you did not extend the built-in background in any way, you simply made your own? Sep 20, 2012 at 19:07
  • No, because this script can adjust the image in different display sizes and offer transitions effects (there are some other scripts alike with slider controls, thumbs etc). WP feature is very basic. The client wanted some specific images for home page and then in posts/pages be able to inform an url to a image (in Media Library or else). I created a custom metabox and then in single pages/post I get the image and use in this script. You can create a very specific area in posts/pages allowing set the image order etc.
    – Diana
    Sep 23, 2012 at 3:40

I'm using child theme with twentythirteen parent. Made a directory with images in my child theme. But first removing default 2013 theme headers.

/* Add custom headers from my child theme */

add_action( 'after_setup_theme', 'childtheme_setup' );

if ( ! function_exists( 'childtheme_setup' ) ):
function childtheme_setup() {   

    /* Remove Default Headers */
    function dr_remove_twenty_thirteen_headers(){
        unregister_default_headers( array(
    add_action( 'after_setup_theme', 'dr_remove_twenty_thirteen_headers', 11 );

    // Add our headers 
    register_default_headers( array(
        'header1' => array(
            'url'           => get_stylesheet_directory_uri() . '/images/headers/target_head2.jpg',
            //'thumbnail_url' => '%s/images/headers/circle-thumbnail.png',
            'description'   => _x( 'header1', 'header image description', 'twentythirteen' )
        'header2' => array(
            'url'           => get_stylesheet_directory_uri() . '/images/headers/target_head1.jpg',
            //'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png',
            'description'   => _x( 'header2', 'header image description', 'twentythirteen' )
        'header3' => array(
            'url'           => get_stylesheet_directory_uri() . '/images/headers/target_head0.jpg',
            //'thumbnail_url' => '%s/images/headers/star-thumbnail.png',
            'description'   => _x( 'header3', 'header image description', 'twentythirteen' )

    ) );

This works on my wp 3.6. You may add more images. I have 9 :)

  • That would work great for randomized mastheads, but we were going for a full-screen background. We figured it out a while back, but thanks :) Aug 19, 2013 at 12:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.