Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 辅助菜单中的woocommerce/sensei动态/可变按钮_Php_Wordpress_Woocommerce_Storefront - Fatal编程技术网

Php 辅助菜单中的woocommerce/sensei动态/可变按钮

Php 辅助菜单中的woocommerce/sensei动态/可变按钮,php,wordpress,woocommerce,storefront,Php,Wordpress,Woocommerce,Storefront,我想在我的二级菜单中添加一个按钮,该按钮指向“我的帐户”页面,如果用户登录,按钮上的文本应显示“我的帐户” 如果用户注销,他们将看到一个显示“注册”的按钮,并指向登录页面 有人知道这是否可能吗 我想我很接近,但我不确定是否可能: 这在my child主题的functions.php中: function storefront_secondary_navigation() { if ( has_nav_menu( 'secondary' ) ) {

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

如果用户注销,他们将看到一个显示“注册”的按钮,并指向登录页面

有人知道这是否可能吗

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

这在my child主题的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
        }
    }
功能店面\辅助\导航(){
如果(具有导航菜单(“辅助”)){
?>

我成功地修复了它,它工作了。我通过wordpress菜单编辑器在二级菜单中创建了两个单独的项目。然后我创建了一个动作挂钩,它检查用户是否登录或注销,然后相应地隐藏按钮(带有菜单编辑器中设置的相应链接)

这样做的缺点是不容易维护,它需要开发人员通过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' );
函数修改辅助菜单按钮(){
如果(!用户是否已登录()){
回声'
jQuery(“#menu-item-8071”).css(“显示”、“无”);
'; 
返回;
}
否则{
回声'
//文件准备就绪
jQuery(文档).ready(函数(){
log(“您已登录”);
jQuery(“#menu-item-8011”).css(“显示”、“无”);
});
';         
}           
}
添加操作('wp_footer','modify_secondary_menu_button');
纯CSS解决方案: 在Wordpress中,如果用户已登录,
元素的类
已登录
。因此,您可以使用此选项隐藏右侧按钮:

将此添加到您的
样式.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类

e、 g:

  • 显示第一个按钮是否登录
  • 如果登录则隐藏第二个按钮
因此,您可以使用以下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;
}

啊,我不知道,这是一个非常简单的解决方案!谢谢,我想我会用这个来代替我的。(除非我想做动画或其他条件检查)。我已经更新了我的答案。也许你喜欢第二个解决方案:)是的,很酷,谢谢,这也很有效,现在我可以将未来的元素链接到这个类,所以我不需要重复的代码。