Question

Je suis en train de cacher un élément de menu de navigation dans certaines circonstances. Plus précisément, si un utilisateur est connecté et a déjà enregistré leur code à barres produit, je veux cacher le lien « Inscription Kit » (qui a une classe de « ac-regkit »).

Voici le PHP J'ai ajouté à la section de la tête de header.php, juste avant wp_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 } ?>

Et voici l'erreur que je reçois:

Erreur serveur Le site a rencontré une erreur lors de la récupération http://athleticode.com/ . Il peut être en maintenance ou configuré de manière incorrecte.

Je ne suis pas un expert en PHP, donc je suis sûr que c'est une erreur de syntaxe ou quelque chose comme ça - et il y a probablement une meilleure façon de parvenir à ce résultat -. De sorte que toute aide serait grandement appréciée

Était-ce utile?

La solution

J'ai 2 menus, et montrer la 2ème seulement si les critères de rencontrer des utilisateurs. Ensuite, utilisez CSS pour afficher les menus comme sa seule.

Je pense que c'est la meilleure façon. Et vous avez l'avantage que les articles ne sont pas vraiment là, et pas seulement caché.

Autres conseils

wp_get_current_user() renvoie l'utilisateur complet objet , de sorte que votre ligne suivante ne devrait pas être $user_id = $current_user, mais $user_id = $current_user->ID.

Je comprends que vous ne pouvez pas activer WP_DEBUG sur un site en direct, et cela pourrait être la raison pour laquelle vous obtenez un message d'erreur « générique » quand quelque chose va mal, mais avez-vous regardé les options pour écrire des messages d'erreur PHP dans un journal fichier à la place? De cette façon, l'utilisateur ne voit pas les erreurs mais vous pouvez. Le développement sans voir les messages d'erreur est presque impossible.

Dans le cas où cela était votre code réel et non pas seulement un exemple, le remplacer par la suivante. BTW: <!-- this is a html comment --> et <?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 ";"
}?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top