Site logo

Archived topic

change logo for individual users

5 replies · Started by Joanne Smith on September 20, 2017

Viewing posts 1–6 of 6

I have been asked if I can have the site LOGO change depending on the USER logged in

I came across this code for the login on a forum -- how would I do something like this on your theme ??

my potential client wants to set up a ecommerce website for different clients of his and then when they login to the site they will see
1) ONLY selected product categories he has given permission for them to see from his products uploaded ((( I found another plugin for this ))
2) AND more importantly the site would be branded to their own business logo and LOOK like their own mini site for their staff!!

so instead of developing multiple sites -- he wants everything under 1 site

here is the code below -- (( surly this is possible ))

add_filter('avf_logo_final_output', 'avf_logged_logo_final_output');

function avf_logged_logo_final_output($logo) {
$headline_type = "h1";
if($dimension === true) $dimension = "height='100' width='300'"; //basically just for better page speed ranking :P
$loggedinlogo = "";
$loggedoutlogo = "";

if ( is_user_logged_in() ) {
$logo = "<$headline_type class='logo bg-logo'>".$loggedinlogo."$sub</$headline_type>";
} else {
$logo = "<$headline_type class='logo bg-logo'>".$loggedoutlogo."$sub</$headline_type>";
}

return $logo;
}

and then a development of the code for the site

Hi!

Yes, use Ismaels code but replace:

if ( is_user_logged_in() ) {
$logo = "<$headline_type class='logo bg-logo'>".$loggedinlogo."$sub</$headline_type>";
} else {
$logo = "<$headline_type class='logo bg-logo'>".$loggedoutlogo."$sub</$headline_type>";
}

with

if ( is_user_logged_in() || is_page(array(20)) ) {
$logo = "<$headline_type class='logo bg-logo'>".$loggedinlogo."$sub</$headline_type>";
} else {
$logo = "<$headline_type class='logo bg-logo'>".$loggedoutlogo."$sub</$headline_type>";
}

instead of 20 insert the id of the page where you want to show the “logged in” logo. You can even insert several ids – just separate the with commas like 20,30,70.

This filter might work better: https://docs.generatepress.com/article/generate_logo/

Something like this:

add_filter( 'generate_logo', 'tu_logged_in_logo' );
function tu_logged_in_logo( $logo ) {
    
    if ( is_user_logged_in() ) {
        return 'URL TO YOUR LOGGED IN LOGO';
    }

    // Otherwise, return our default logo
    return $logo;
}

that just turned OFF the logo

I had a quick hunt around last night and could not find anything suitable -- Maybe I am BARKING up the wrong TREE but if a potential customer asks for it I will look for a solution -- mind you it is a weird request! -- (( you always get something out of left field )

so here goes again --I will be using this plugin to create a wholesale woo-commerce site where he cane assign products to each unique registered user on the site.

https://barn2.co.uk/woocommerce-wholesale-customer-categories/

BUT the client wants a 'upload image button' on the wordpress users dashboard so he can load their company logo --to brand the wholesale experience to 1 customer who is logged in at that time -- can you replace the LOGO at the top of he live page with their LOGO so it looks like their site ?

otherwise the only way around it would be to create a sub-domain on the server for each new client of his and set up a woo store on each sub domain and upload the products he just wants for those clients -- but that is a CRAZY way to do it as well --- using up so much space on the hosting and time consuming!

????

Joanne

Something like that gets quite complex.

First, you need to add the option to the user profile.

Then you'd need to use the filter above (it works, I promise), and call the option using this function: https://codex.wordpress.org/Function_Reference/get_user_meta

So, super quick and likely needs tweaking:

add_filter( 'generate_logo', 'tu_logged_in_logo' );
function tu_logged_in_logo( $logo ) {
    
    $user_logo = get_user_meta( $user_id, 'your_option_name', true );

    if ( $user_logo ) {
        $logo = $user_logo;
    }

    return $logo;
}

You'll need to figure out the $user_id variable, and the $user_logo variable will need to return a URL set in the user options.

Thanks ---
I will give it a TRY!!

Joanne

This archived topic is closed to new replies.