0

我想在我的二级菜单中添加一个按钮,该按钮指向“我的帐户”页面,如果用户登录,按钮上的文本应显示“我的帐户”。

如果用户退出,他们会看到一个按钮,上面写着“注册”并指向一个登录页面。

有谁知道这是否可能?

我想我很接近,但我不确定是否有可能:

这是我的子主题的functions.php:

    function storefront_secondary_navigation() {
        if ( has_nav_menu( 'secondary' ) ) {
            ?>
            <nav class="secondary-navigation" role="navigation" aria-label="<?php esc_html_e( 'Secondary Navigation', 'storefront' ); ?>">
                <p>wat is deze</p>
                <?php


                        if( ! is_user_logged_in()) {
                        wp_nav_menu(
                                array(
                                    'theme_location'    => 'secondary',
                                    'fallback_cb'       => '',

                                )

                            );

                        }
                        else{
                        wp_nav_menu(
                                array(
                                    'theme_location'    => 'secondary',
                                    'fallback_cb'       => '',

                                )

                            );

                        }
echo "menu locations";
$hoi = get_nav_menu_locations();
var_dump($hoi);
//outputs an array with 3 objects: 'primary', 'secondary', and 'handheld'.
                ?>
            </nav><!-- #site-navigation -->
            <?php
        }
    }
4

2 回答 2

1

纯 CSS 解决方案:

在 Wordpress 中,如果用户登录,则<body>元素具有类logged-in。因此您可以使用它来隐藏右键:

将此添加到您的style.css

#menu-item-8071 {
    display: none;
}

body.logged-in #menu-item-8071 {
    display: block;
}

body.logged-in #menu-item-8011 {
    display: none;
}

您可以将自己的 css 类添加到按钮中,而不是使用菜单项 id 作为 css 选择器。首先,您必须在“屏幕选项”(菜单编辑器页面顶部)中启用“CSS 类”。现在您可以为每个菜单项输入额外的 css 类。

例如:

  • show-if-logged-in对于第一个按钮
  • hide-if-logged-in对于第二个按钮

所以你可以使用这个css代码:

.show-if-logged-in {
    display: none;
}

body.logged-in show-if-logged-in {
    display: block;
}

body.logged-in .hide-if-logged-in {
    display: none;
}
于 2017-02-08T20:45:24.853 回答
0

我设法修复它并且它有效。我通过 wordpress 菜单编辑器在二级菜单中制作了 2 个单独的项目。然后我创建了一个动作钩子,它检查用户是否登录或退出,然后相应地隐藏按钮(带有在菜单编辑器中设置的相应链接)。

这样做的缺点是它不容易维护,它需要开发人员通过 ID 获取元素,因此如果有人更改菜单设置,它可能会获得不同的 ID,因此每次都需要手动修复。

function modify_secondary_menu_buttons() {                  
        if( ! is_user_logged_in()) {
            echo '<script type="text/javascript">
                jQuery("#menu-item-8071").css("display", "none");
            </script>'; 
            return;

        }
        else{
             echo '<script type="text/javascript">
            // Document ready
            jQuery(document).ready(function(){
                console.log("You are logged in");

                jQuery("#menu-item-8011").css("display", "none");

            });
            </script>';         
        }           
}
add_action( 'wp_footer', 'modify_secondary_menu_buttons' );
于 2017-02-08T20:08:52.053 回答