php - Adding if statement

I'm pretty new to PHP however have managed to put together a site I'm happy with.Once small issue I am having

I'm pretty new to PHP however have managed to put together a site I'm happy with. Once small issue I am having is that I would like to add content for users with specific roles, this means adding an if statement in the middle of a pre existing one for me.

Below is my current code:

<?php global $current_user; wp_get_current_user(); ?>
        <?php if ( is_user_logged_in() ) { 
         echo '<ul style="padding: 0; margin: 0;">
                    <li class="adminBar" style="float: left; line-height: 60px; border-left: 1px solid #555555; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li id="logoutDrop" class="loginBtn" style="background-color: #27618d; float: right;"><a style="text-decoration: none; text-transform: none; line-height: 60px; color: #fff; padding: 15px 20px 15px 20px;" href=""' . wp_logout_url() . '">Logout</a>' . '
                    <li id="logoutDrop" style="border-right: 1px solid #555; padding: 0 15px 0 15px; float: right;"><a style="text-transform: none; text-decoration: none; line-height: 60px; color: #fff;">Hi, ' . $current_user->user_login . '</a>' . '

                        <ul style="display: none;">
                            <li><a href="#" style="">Logout</a></li>
                        </ul>
                    </li>' .
                '</ul>' . "\n";} 

        else  { echo '
            <div id="stmposTitle">
            <a href="/" style="text-decoration: none; float: left; text-transform: none; line-height: 35px; color: #fff;">
            <img src="#" style="margin-top: 2px; float:left; padding-right: 10px;">Name</a></div>
            <a class="loginBtn" style="float: right; line-height: 35px; color: #fff; background-color: #27618d; padding: 0 15px; 0 15px; text-decoration: none;" href="' . wp_login_url() . '">Login</a>' ;} ?>

I essentially want to allow it so that there is a part of this menu that logged in users with only specific roles can see. Something like the below although it is not quite right as it stops the site from loading:

<?php global $current_user; wp_get_current_user(); ?>
        <?php if ( is_user_logged_in() ) { 
         echo '<ul style="padding: 0; margin: 0;">
                    <li class="adminBar" style="float: left; line-height: 60px; border-left: 1px solid #555555; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>'

                    <?php if( current_user_can('editor') || current_user_can('administrator') ) {  ?>
                        content
                    <?php } ?>

                    '
                    <li id="logoutDrop" class="loginBtn" style="background-color: #27618d; float: right;"><a style="text-decoration: none; text-transform: none; line-height: 60px; color: #fff; padding: 15px 20px 15px 20px;" href=""' . wp_logout_url() . '">Logout</a>' . '
                    <li id="logoutDrop" style="border-right: 1px solid #555; padding: 0 15px 0 15px; float: right;"><a style="text-transform: none; text-decoration: none; line-height: 60px; color: #fff;">Hi, ' . $current_user->user_login . '</a>' . '

                        <ul style="display: none;">
                            <li><a href="#" style="">Logout</a></li>
                        </ul>
                    </li>' .
                '</ul>' . "\n";} 


        else  { echo '
            <div id="stmposTitle">
            <a href="/" style="text-decoration: none; float: left; text-transform: none; line-height: 35px; color: #fff;">
            <img src="#" style="margin-top: 2px; float:left; padding-right: 10px;">Name</a></div>
            <a class="loginBtn" style="float: right; line-height: 35px; color: #fff; background-color: #27618d; padding: 0 15px; 0 15px; text-decoration: none;" href="' . wp_login_url() . '">Login</a>' ;} ?>

Thanks in advance for your help!

I'm pretty new to PHP however have managed to put together a site I'm happy with. Once small issue I am having is that I would like to add content for users with specific roles, this means adding an if statement in the middle of a pre existing one for me.

Below is my current code:

<?php global $current_user; wp_get_current_user(); ?>
        <?php if ( is_user_logged_in() ) { 
         echo '<ul style="padding: 0; margin: 0;">
                    <li class="adminBar" style="float: left; line-height: 60px; border-left: 1px solid #555555; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li id="logoutDrop" class="loginBtn" style="background-color: #27618d; float: right;"><a style="text-decoration: none; text-transform: none; line-height: 60px; color: #fff; padding: 15px 20px 15px 20px;" href=""' . wp_logout_url() . '">Logout</a>' . '
                    <li id="logoutDrop" style="border-right: 1px solid #555; padding: 0 15px 0 15px; float: right;"><a style="text-transform: none; text-decoration: none; line-height: 60px; color: #fff;">Hi, ' . $current_user->user_login . '</a>' . '

                        <ul style="display: none;">
                            <li><a href="#" style="">Logout</a></li>
                        </ul>
                    </li>' .
                '</ul>' . "\n";} 

        else  { echo '
            <div id="stmposTitle">
            <a href="/" style="text-decoration: none; float: left; text-transform: none; line-height: 35px; color: #fff;">
            <img src="#" style="margin-top: 2px; float:left; padding-right: 10px;">Name</a></div>
            <a class="loginBtn" style="float: right; line-height: 35px; color: #fff; background-color: #27618d; padding: 0 15px; 0 15px; text-decoration: none;" href="' . wp_login_url() . '">Login</a>' ;} ?>

I essentially want to allow it so that there is a part of this menu that logged in users with only specific roles can see. Something like the below although it is not quite right as it stops the site from loading:

<?php global $current_user; wp_get_current_user(); ?>
        <?php if ( is_user_logged_in() ) { 
         echo '<ul style="padding: 0; margin: 0;">
                    <li class="adminBar" style="float: left; line-height: 60px; border-left: 1px solid #555555; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
                    <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>'

                    <?php if( current_user_can('editor') || current_user_can('administrator') ) {  ?>
                        content
                    <?php } ?>

                    '
                    <li id="logoutDrop" class="loginBtn" style="background-color: #27618d; float: right;"><a style="text-decoration: none; text-transform: none; line-height: 60px; color: #fff; padding: 15px 20px 15px 20px;" href=""' . wp_logout_url() . '">Logout</a>' . '
                    <li id="logoutDrop" style="border-right: 1px solid #555; padding: 0 15px 0 15px; float: right;"><a style="text-transform: none; text-decoration: none; line-height: 60px; color: #fff;">Hi, ' . $current_user->user_login . '</a>' . '

                        <ul style="display: none;">
                            <li><a href="#" style="">Logout</a></li>
                        </ul>
                    </li>' .
                '</ul>' . "\n";} 


        else  { echo '
            <div id="stmposTitle">
            <a href="/" style="text-decoration: none; float: left; text-transform: none; line-height: 35px; color: #fff;">
            <img src="#" style="margin-top: 2px; float:left; padding-right: 10px;">Name</a></div>
            <a class="loginBtn" style="float: right; line-height: 35px; color: #fff; background-color: #27618d; padding: 0 15px; 0 15px; text-decoration: none;" href="' . wp_login_url() . '">Login</a>' ;} ?>

Thanks in advance for your help!

Share Improve this question edited Nov 14, 2019 at 12:00 Chetan Vaghela 2,4084 gold badges10 silver badges16 bronze badges asked Nov 14, 2019 at 10:02 ScottScott 1 1
  • 1 You can not add if condition statement in echo statement. – Chetan Vaghela Commented Nov 14, 2019 at 10:09
Add a comment  | 

2 Answers 2

Reset to default 0

I have format your code and break echo statement into parts and add if condition. you can take reference from below code.

 <?php if ( is_user_logged_in() ) { 
         echo '<ul style="padding: 0; margin: 0;">
            <li class="adminBar" style="float: left; line-height: 60px; border-left: 1px solid #555555; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
            <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
            <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
            <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>
            <li class="adminBar" style="float: left; line-height: 60px; border-right: 1px solid #555555;"><a href="#" target="_blank"><img src="#" height="40px" style="padding-left: 15px; padding-right: 15px;"></a></li>' ; 

            if( current_user_can('editor') || current_user_can('administrator') ) {  
                ?>
                # add you content here
                <?php 
            } 

           echo  '<li id="logoutDrop" class="loginBtn" style="background-color: #27618d; float: right;"><a style="text-decoration: none; text-transform: none; line-height: 60px; color: #fff; padding: 15px 20px 15px 20px;" href=""' . wp_logout_url() . '">Logout</a>' . '
            <li id="logoutDrop" style="border-right: 1px solid #555; padding: 0 15px 0 15px; float: right;"><a style="text-transform: none; text-decoration: none; line-height: 60px; color: #fff;">Hi, '.$current_user->user_login. '</a>
              <ul style="display: none;">
                <li><a href="#" style="">Logout</a></li>
              </ul>
            </li>' .
          '</ul>';
      }      
      else  
      { 
        echo '<div id="stmposTitle">
        <a href="/" style="text-decoration: none; float: left; text-transform: none; line-height: 35px; color: #fff;">
        <img src="#" style="margin-top: 2px; float:left; padding-right: 10px;">Name</a></div>
        <a class="loginBtn" style="float: right; line-height: 35px; color: #fff; background-color: #27618d; padding: 0 15px; 0 15px; text-decoration: none;" href="' . wp_login_url() . '">Login</a>' ;
      } 
  ?>

Firstly, your code is wrong. You are not allowed to put an if statement inside echo.

However, if you have your menu created using default WordPress menus (Appearance - Menu), which is definitely the right way, rather than hard coding it, better way would be to dynamically remove unwanted menu items based on your conditions using wp_nav_menu_objects filter.

add_filter('wp_nav_menu_objects', 'remove_menu_items', 10, 2);

function remove_menu_items($removed_menu_objects, $args) {

    // if current user role is Editor or Administrator, do not remove anything
    if( current_user_can('editor') || current_user_can('administrator') )
        return $removed_menu_objects;

    // for any other user role, remove menu items with title of "Logout" and "Contact"
    $remove = array('Logout', 'Contact');

    foreach ($removed_menu_objects as $key => $menu_object) {
        if (in_array($menu_object->title, $remove)) {
            unset($removed_menu_objects[$key]);
        }
    }

    return $removed_menu_objects;
}

Code goes inside functions.php of your active child theme. You can also compare e.g. menu item IDs, rather than their titles.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745004966a4605724.html

相关推荐

  • php - Adding if statement

    I'm pretty new to PHP however have managed to put together a site I'm happy with.Once small issue I am having

    15小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信