How to display different links for logged in and l

2019-03-05 17:55发布

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 

Here is the code I tried to use to get this to work

    <div class="fr">
            <ul class="rss">

                <li><a href="http:/jfdfjdf.com/wp-login.php">Support</a></li>
                <li><?php if (is_user_logged_in() ) { echo " <a href=" . wp_logout_url() . " title=\"Logout\">Logout</a>";}?></li>
                <li><?php else if (!is_user_logged_in() ) { echo " <a href="fdjdjfd.com" title=\"Logout\">Member Login</a>";}?></li>
            </ul>
        </div>

But it is not working can anybody help me out?

标签: wordpress
8条回答
孤傲高冷的网名
2楼-- · 2019-03-05 18:10

Use this code:

<div class="fr">
  <ul class="rss">
    <li><a href="http://example.com/wp-login.php">Support</a></li>
    <li>
      <?php if (is_user_logged_in() ): ?>
        <a href="<?php echo wp_logout_url() ?>" title="Logout">Logout</a>
      <?php else: ?> 
        <a href="http://example.com/wp-login.php" title="Logout">Member Login</a>
      <?php endif ?>
    </li>
   </ul>
</div>

Your mistake is that you should not insert anything between closing } and else keyword. Also, in templates, oldschool if, while, foreach form should be used - see above.

查看更多
仙女界的扛把子
3楼-- · 2019-03-05 18:12

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 '';
}
查看更多
Viruses.
4楼-- · 2019-03-05 18:16

Have you tried changing ?php else if (!is_user_logged_in() ) to just ?php if (!is_user_logged_in() ) ?

查看更多
虎瘦雄心在
5楼-- · 2019-03-05 18:18

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

查看更多
Lonely孤独者°
6楼-- · 2019-03-05 18:19

Apart from coding you can always use a plugin called Nav Menu Roles

Screenshot

查看更多
兄弟一词,经得起流年.
7楼-- · 2019-03-05 18:20

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> 
查看更多
登录 后发表回答