根据Get_User_Meta结果隐藏导航菜单项

时间:2011-05-27 作者:Shaun Scovil

在某些情况下,我试图隐藏导航菜单项。具体来说,如果用户已登录并已注册其产品条形码,我想隐藏“Register Kit”链接(其类为“ac regkit”)。

下面是我添加到header的head部分的PHP。php,就在wp\\u head()之前;。

/* If User is loggied in, hide LOG IN and SIGN UP links */
<?php if ( is_user_logged_in() ) { ?>
    <style>
        .ac-login { display: none; }
        .ac-signup { display: none; }
    </style>

    /*If user has not yet registered their DNA Test Kit, show link */
    <?php
        $current_user = wp_get_current_user();
        $user_id = $current_user;
        $key = \'redeem_code\';
        $single = true;
        $ac-barcode = wp_get_user_meta( $user_id, $key, $single);
        if ( $ac-barcode = \'\' ) { ?>
        <style>
            .ac-regkit { display: inline; font-weight: bold; }
            .ac-regkit a { color: red; }
        </style>
    <?php }; ?>
<?php } ?>
这就是我得到的错误:

Server Error 网站在检索时遇到错误http://athleticode.com/. 它可能因维护而停机或配置不正确。

我不是PHP方面的专家,所以我确信这是一个语法错误或类似的错误——可能有更好的方法来实现这一结果——因此,任何帮助都将不胜感激。

3 个回复
最合适的回答,由SO网友:MZAweb 整理而成

我有两个菜单,只有当用户符合条件时才显示第二个菜单。然后,使用CSS显示两个菜单,就像它唯一的一个一样。

我认为这是最简单的方法。你有一个好处,那就是物品并不存在,而不仅仅是隐藏的。

SO网友:kaiser

如果这是您的真实代码,而不仅仅是一个示例,请用以下代码替换它。顺便说一句:<!-- this is a html comment --><?php /* this is */ # like this or // that a php comment ?>.

<?php 
// Note: I moved all php-Comments inside the php tags. 
/* If User is loggied in, hide LOG IN and SIGN UP links */
if ( is_user_logged_in() ) 
{ 
?>
    <style>
        .ac-login { display: none; }
        .ac-signup { display: none; }
    </style>

    <?php
    /* If user has not yet registered their DNA Test Kit, show link */
        $current_user = get_currentuserinfo(); // THIS IS THE FUNCTION YOU NEED
        $user_id = $current_user->ID;
        $key = \'redeem_code\';
        $single = true;
        $ac_barcode = wp_get_user_meta( $user_id, $key, $single);
        if ( empty( $ac_barcode ) ) { // YOU COULD TRY if ( ! $ac-barcode ) TOO
?>
        <style>
            .ac-regkit { display: inline; font-weight: bold; }
            .ac-regkit a { color: red; }
        </style>
<?php 
    } // removed ";"
}?>

SO网友:Jan Fabry

wp_get_current_user() returns the complete user object, 所以你的下一行不应该是$user_id = $current_user, 但是$user_id = $current_user->ID.

我知道您无法启用WP_DEBUG 在实时站点上,这可能是您在出现问题时收到“通用”错误消息的原因,但您是否查看了将PHP错误消息写入日志文件的选项?这样,用户不会看到错误,但您可以看到。开发时几乎不可能不看到错误消息。

结束

相关推荐

寻找一个好的方法来包括在帖子中的php代码,但使用特殊的包含标记而不是直接的php代码

好吧,有点奇怪。。。我想通过添加以下内容在我的一个页面中包含php代码:Welcome to the payment page [paymentform] Blash blah vlha... 然后,[paymentform]解析为文件系统或数据库中的某个位置的一段代码,并由后端的设置页面处理。我不想使用exec-php插件有几个原因——主要是我不想让我们的客户机弄乱php代码,其次,在可视化编辑器中使用该插件有一些限制。。等干杯,约翰。