Quick and simple way to add the new custom background selector to your WordPress 3.0 theme.
Seriously. That’s it. Just add that to the theme’s functions.php file.
Okay, so your theme does need to have the normal wp_head() call in it. For those of you more CSS inclined, this basically creates CSS code for the body and adds that code to the head output directly. Voila, your theme gets styled.
Note that you will need to also not define your own background stuff in the theme for this to work. If the user tries to put in a solid color background and you define an image background, then the color won’t work or be visible over your image. Best to not put anything background related onto the body at all, in fact.
For those more inclined to customize things, there’s actually three parameters you can use:
function add_custom_background($header_callback = '', $admin_header_callback = '', $admin_image_div_callback = '')
Each of these are references to a callback function. If you use them, then you need to define your own callback functions to replace the default ones.
The header_callback function is what builds and outputs the CSS. The function takes no parameters, but it can use get_background_image() and get_background_color() to retrieve the necessary information. From this information, the function should produce and output (echo) the necessary <style> block to show the image.
The admin_header_callback function is called in the head section of the admin side of things; in the Background section to be specific. The admin_image_div_callback is similar, called immediately after displaying “This is your current background” on that page, where the image is displayed. If used, the admin_image_div_callback replaces the display of the current background image, so you custom callback should produce that instead.
These two admin callbacks can be used to modify the Background admin page, to add custom text or information, etc.
But generally, most themes won’t need this level of customization. Just add the basic code to the theme and the defaults are good to go. 🙂