Plusieurs fonds personnalisés dans un thème WordPress (alternative à add_custom_background)
La fonction de WordPress add_custom_background() permet d’ajouter un fond personnalisé aux paramètres de thème, fond qui sera ensuite appliqué sur la balise body en front.
Cependant, cette fonction n’autorise qu’un seul fond personnalisé.
Comment faire si l’on souhaite pouvoir définir plusieurs fonds personnalisés ? Par exemple, mettre un background sur la home, un autre pour une catégorie donnée, et enfin, un fond par défaut sur les autres pages ?
Voici un script qui permet de répondre à cette problématique.
1- Inclusion
Ajoutez le fichier custom-background-multiple.php à votre dossier de thème.
2- Déclarer les fonds nécessaires
Dans le fichier functions.php, ajoutez les lignes suivantes :
/* custom background multiple */
require_once( dirname(__FILE__).'/custom-background-multiple.php' );
if (is_admin() )
{
//Declaration des fonds nécessaires
//Vous pouvez déclarer autant de fonds que souhaité.
/*Ordre des arguments :
1- Callback, fonction définie ci-après
2- Chaine vide (en réalité : $admin_image_div_callback (cf add_custom_background())).
3- Titre dans le menu d'administration (menu apparence)
4- Ajout au titre de la page "Arrière-plan personnalisé"
5- L'identifiant unique de ce fond
*/
$custom_background_multiple_home =& new Custom_Background_Multiple( 'my_custom_mutiple_background_cb', '' ,'Fond accueil',' : Page d\'accueil','home');
add_action( 'admin_menu', array( &$custom_background_multiple_home, 'init' ) );
$custom_background_multiple_toto =& new Custom_Background_Multiple( 'my_custom_mutiple_background_cb', '','Fond pour Toto',' : Pages de la catégorie Toto','toto');
add_action( 'admin_menu', array( &$custom_background_multiple_toto, 'init' ) );
$custom_background_multiple_defaut =& new Custom_Background_Multiple( 'my_custom_mutiple_background_cb', '','Fond par défaut',' : Autres pages','defaut');
add_action( 'admin_menu', array( &$custom_background_multiple_defaut, 'init' ) );
}
else
add_action( 'wp_head', 'my_custom_mutiple_background_cb' );
/* end custom background multiple */
Cela ajoute, dans la menu « Apparence », une entrée de menu pour chacun des fonds personnalisés.
Ensuite, il faut définir dans quels cas on va afficher quel fond. C’est le role de la fonction
my_custom_mutiple_background_cb(), définie comme callback, qu’on va ajouter à la suite de notre fichier functions.php.
/* Cette fonction doit être modifiée en fonction des conditions d'affichage des différents backgrounds
*/
function my_custom_mutiple_background_cb(){
/* conditions à modifier
Le but est d'avoir dans $cle, l'identifiant unique du fond souhaité, tel que défini au-dessus
*/
$cle='defaut';
if(is_home())
$cle='home';
elseif(is_category('toto'))
$cle='toto';
/* fin des conditions */
echo custom_mutiple_background_cb($cle);
}




Par lawrenced
i like this, tried it and it works .
am i right in thinking it overwrites the wp-background file in wp includes?
As would be bad fom if it was called twice.
still, as id say in gcse french, yes im english,
tres bien, merci boucoup pour votre..erm…maybe i need french lessons too, bon noel!