When a user is not logged in I am trying to show
Support || Log In
When they are logged out it should say
Support || Log Out
<
Add this to functions.php in your theme or create a plugin. Change 'menu' to the menu location eg. 'primary-menu' in your theme. Change 'logged-in' to the name of the logged in menu and logged out respectively.
<?php
function my_wp_nav_menu_args( $args = '' ) {
if( is_user_logged_in() ) {
$args['menu'] = 'logged-in';
} else {
$args['menu'] = 'logged-out';
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
?>
referenced from: WPBeginner
Apart from coding you can always use a plugin called Nav Menu Roles
Not sure about the result of your function, but to start you were not escaping properly. Secondly, why not just use one li
to house the correct link as follows:
<div class="fr">
<ul class="rss">
<li><a href="http://example.com/go/wp-login.php">Support</a></li>
<li><?php if (is_user_logged_in() ) {
echo " <a href=\"" . wp_logout_url() . "\" title=\"Logout\">Logout</a>";
}else{
echo " <a href=\"http://example.com/" title=\"Login\">Member Login</a>";
} ?>
</li>
</ul>
</div>
Another way to display content for users with a shortcode. Post this into functions.php
// When member is logged in [memberin]
add_shortcode( 'memberin', 'member_check_shortcode' );
function member_check_shortcode( $atts, $content = null ) {
function member_check_shortcode( $atts, $content = null ) {
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return '';
}
// When member is logged out [memberout]
add_shortcode( 'memberout', 'member_check_shortcode_out' );
function member_check_shortcode_out( $atts, $content = null ) {
if (!is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return '';
}
Have you tried changing ?php else if (!is_user_logged_in() )
to just ?php if (!is_user_logged_in() )
?
What about the following?
<div class="fr">
<ul class="rss">
<li><a href="http://example.com/wp-login.php">Support</a></li>
<?php if (is_user_logged_in() ) { echo " <li><a href=" . wp_logout_url() . " title=\"Logout\">Logout</a></li>";}?>
<?php else if (!is_user_logged_in() ) { echo " <li><a href="http://example.com/wp-login.php" title=\"Logout\">Member Login</a></li>";}?>
</ul>
</div>
I moved the php if statements so you don't get empty li elements. You should still do the escaping that others have noticed.