Как отобразить разные ссылки для вошедших и вышедших из системы пользователей? - PullRequest
0 голосов
/ 09 августа 2011

Когда пользователь не вошел в систему, я пытаюсь показать

Support || Log In

Когда они вышли из системы, они должны сказать

Support || Log Out 

Вот код, который я пытался использовать, чтобы заставить его работать

    <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>

Но это не работает, кто-нибудь может мне помочь?

Ответы [ 8 ]

3 голосов
/ 09 августа 2011

В вашем коде есть синтаксическая ошибка:

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

Вы должны избегать двойных кавычек:

<li><?php else if (!is_user_logged_in() ) { echo " <a href=\"http://example.com/wp-login.php\" title=\"Logout\">Member Login</a>";}?></li>
2 голосов
/ 09 августа 2011

Не уверен насчет результата вашей функции, но для начала вы не сбежали должным образом.Во-вторых, почему бы просто не использовать один li для размещения правильной ссылки следующим образом:

<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> 
1 голос
/ 10 ноября 2015

Помимо кодирования вы всегда можете использовать плагин под названием Роли в меню навигации

Screenshot

1 голос
/ 06 апреля 2013

Еще один способ отображения контента для пользователей с помощью шорткода. Разместите это в 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 '';
}
1 голос
/ 09 августа 2011

Используйте этот код:

<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>

Ваша ошибка в том, что вы не должны вставлять что-либо между закрывающими ключевыми словами } и elseТакже в шаблонах следует использовать форму oldschool if, while, foreach - см. Выше.

0 голосов
/ 11 апреля 2014

Добавьте это к functions.php в вашей теме или создайте плагин. Измените «меню» на расположение меню, например. 'primary-menu' в вашей теме. Измените 'logged in' на имя входа в меню и выхода из системы соответственно.

<?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' );
?>

ссылка с: WPBeginner

0 голосов
/ 09 августа 2011

А как насчет следующего?

<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>

Я переместил операторы php if, чтобы вы не получили пустых li элементов. Вы все равно должны сделать побег, который заметили другие.

0 голосов
/ 09 августа 2011

Вы пытались изменить ?php else if (!is_user_logged_in() ) на ?php if (!is_user_logged_in() )?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...