2013-03-02 4 views
1

J'essaie de comprendre comment ajouter un login/logout au menu. Lorsque j'ajoute ce code à l'en-tête wordpress, le contenu et la barre latérale disparaissent. Comment puis-je ajouter la connexion/déconnexion au menu sans perdre le reste de ma page. J'ai essayé de l'ajouter dans le menu des paramètres et cela ne fonctionne pas avec le thème que j'utilise.Ajouter un identifiant/une nouvelle connexion au menu Woocommerce Wordpress

<ul> 
<?php 
$myaccount_page_id = get_option('woocommerce_myaccount_page_id'); 
if ($myaccount_page_id  && !is_user_logged_in()) { 
    $myaccount_page_url = get_permalink($myaccount_page_id); 
    ?> 
    <li><a href="<?php echo $myaccount_page_url; ?>" class="login-header"><?php _e('Login', 'woocommerce'); ?></a></li> 
    <?php 
} 
$myaccount_page_id = get_option('woocommerce_myaccount_page_id'); 
if ($myaccount_page_id && is_user_logged_in()) { 
    $logout_url = wp_logout_url(get_permalink($myaccount_page_id)); 
    if (get_option('woocommerce_force_ssl_checkout') == 'yes') 
     $logout_url = str_replace('http:', 'https:', $logout_url); 
    ?> 
    <li><a href="<?php echo $logout_url; ?>" class="login-header"><?php _e('Logout', 'woocommerce'); ?></a></li> 
    <?php } ?> 
    <li><a href="<?php echo $woocommerce->cart->get_cart_url(); ?>" class="cart-header"><?php _e('Shopping Cart', 'woocommerce'); ?> <?php echo sprintf(_n('(%d)', '(%d)', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?></a></li> 
    <li><a href="<?php echo $woocommerce->cart->get_checkout_url(); ?>" class="check-header"><?php _e('Checkout', 'woocommerce'); ?></a></li> 
</ul> 

Répondre

4

Si vous utilisez un plugin comme Theme My Login vous pouvez simplement créer le lien vers la page de connexion dans votre menu. Il affichera "Connexion" si la personne n'est pas connectée, et "Déconnexion" si la personne est connectée. Espérons que cela aide!

0

manière plus facile est de changer la structure du menu

Connexion (menu déroulant)

  • Mot de passe perdu

Mon compte (menu déroulant)

  • changement Mot de passe
  • Perdu Mot de passe
  • Déconnexion

puis afficher ou masquer la page suivante ID dans WooCommerce-functions.php (: 123)

function woocommerce_nav_menu_items($items, $args) { 
    if (! is_user_logged_in()) { 

     $hide_pages = array(); 
     $hide_pages[] = 20; 
     $hide_pages = apply_filters('woocommerce_logged_out_hidden_page_ids', $hide_pages); 

     foreach ($items as $key => $item) { 
      if (! empty($item->object_id) && ! empty($item->object) && in_array($item->object_id, $hide_pages) && $item->object == 'page') { 
       unset($items[ $key ]); 
      } 
     } 
    } else { 
     $hide_pages = array(); 
     $hide_pages[] = 18; 
     $hide_pages = apply_filters('woocommerce_logged_out_hidden_page_ids', $hide_pages); 

     foreach ($items as $key => $item) { 
      if (! empty($item->object_id) && ! empty($item->object) && in_array($item->object_id, $hide_pages) && $item->object == 'page') { 
       unset($items[ $key ]); 
      } 
     } 
    } 

    return $items; 
} 

mon id page de connexion était '20', et mon numéro de page de compte était '18'

espère que cela aide quelqu'un dans le besoin

2

Déconnexion Lien: /client = true

fermeture de session

lien de connexion envoyé à la page Mon compte pour déclencher connexion: /mon compte/

+0

J'adore les réponses simples comme ça :) – DeFeNdog

1

Il y a beaucoup de codes qui ne fonctionne pas. Je viens de trouver celui qui fonctionne parfaitement. Commencez functions.php avec:

add_filter('wp_nav_menu_items', 'my_account_loginout_link', 10, 2); 
/** 
* Add WooCommerce My Account Login/Logout to Menu 
* 
* @see https://support.woothemes.com/hc/en-us/articles/203106357-Add-Login-Logout-Links-To-The-Custom-Primary-Menu-Area 
*/ 
function my_account_loginout_link($items, $args) { 
    if (is_user_logged_in() && $args->theme_location == 'top') { //change your theme location menu to suit 
     $items .= '<li><a class="nav-link" href="'. wp_logout_url(get_permalink(wc_get_page_id('shop'))) .'">Sair</a></li>'; //change logout link, here it goes to 'shop', you may want to put it to 'myaccount' 
    } 
    elseif (!is_user_logged_in() && $args->theme_location == 'top') {//change your theme location menu to suit 
     $items .= '<li><a class="nav-link" href="' . get_permalink(wc_get_page_id('myaccount')) . '">Entrar</a></li>'; 
    } 
    return $items; 
} 
Questions connexes