web-dev-qa-db-fra.com

Comment ajouter un logo personnalisé à des thèmes entiers

J'aimerais ajouter un logo personnalisé à l'ensemble du tableau de bord de mon réseau de blogs. Je suis allé dans une recette sur smashing magazine et j'ai obtenu ce code:

//hook the administrative header output
add_action('admin_head', 'my_custom_logo');

function my_custom_logo() {
    echo '
      <style type="text/css">
      #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; }
      </style>
    ';
 }

Où est-ce que je l'ajoute? Je pense que je devrais l'ajouter dans functions.php. Mais si c'est le cas, je devrais ajouter le code à chaque thème de mes réseaux multiples.

Quelqu'un a-t-il l'idée de l'ajouter à l'ensemble du réseau? Je devrais également pouvoir définir uniquement pour un sous-marin particulier et non pour l'ensemble du réseau, si je change d'avis ultérieurement :)

Je vous remercie!

1
user391

Si vous souhaitez que ce logo apparaisse sur tous les sites de votre réseau, quel que soit le thème, je vous conseille de créer un nouveau fichier PHP dans wp-content/mu-plugins (créez le répertoire s'il n'existe pas) et supprimez ce code. à l'intérieur du nouveau fichier. Vous pouvez nommer votre fichier comme bon vous semble, par exemple my-network-tweaks.php. Ce fichier sera automatiquement chargé en tant que plug-in sur tous les sites.

Et si vous souhaitez remplacer cette image pour un site particulier, vous pouvez rendre cette fonction connectable. Comme ça:

<?php
//hook the administrative header output
add_action('admin_head', 'my_custom_logo');

// if override function exists load it up instead
if(function_exists('override_my_custom_logo')) {

    function my_custom_logo() {
        override_my_custom_logo();
    }

// fallback to original function
} else {

    function my_custom_logo() {
        echo '
        <style type="text/css">
            #header-logo { background-image: url('/path/to/images/custom-logo.gif) !important; }
        </style>
        ';
    }

}
?>

Notez que j'ai modifié le chemin de l'image car nous souhaitons qu'il pointe vers un seul fichier pour l'ensemble du réseau. L'utilisation de get_bloginfo('template_directory') entraînerait le chargement de l'image à partir du répertoire du thème.

Si vous souhaitez remplacer l'image d'un seul site, utilisez simplement le code de Tom J Nowell en renommant la fonction en override_my_custom_logo

3
iv.draganov

Placez ceci dans functions.php et ajoutez un fichier custom-logo.gif (32x32 pixels) dans un sous-dossier images de votre thème.

//hook the administrative header output
add_action('admin_head', 'my_custom_logo');

function my_custom_logo() {
    echo '
<style type="text/css">
#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; }
</style>
';
}
1
Tom J Nowell

Vous pouvez vérifier le plugin White Label CMS pour automatiser cela pour vous.

1
Eric