2013-03-02 79 views
1

我想弄清楚如何添加登录/注销菜单。当我将这段代码添加到wordpress头部时,内容和侧栏消失。我如何将登录/注销添加到菜单而不会丢失我的页面的其余部分。我曾尝试在设置菜单中添加它,但它不适用于我正在使用的主题。添加登录/注销菜单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> 

回答

4

如果您使用插件像Theme My Login你可以创建你的菜单链接到登录页面。如果该用户未登录,它将显示“登录”,如果该用户登录,则显示“登出”。希望这有助于您!

0

更简单的方法是改变菜单结构

登录(下拉菜单)

  • 忘记密码:

我的账户(下拉菜单)

  • 变化密码
  • 丢失密码
  • 注销

然后显示或woocommerce-functions.php的隐藏下页ID(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; 
} 

我的登录页面ID是 '20',和我的账户页面ID是'18'

希望它可以帮助有需要的人

2

注销链接: /客户注销=真正

登录链接发送到我的帐户页面触发登录: /my-account/

+0

我喜欢这种简单的答案:) – DeFeNdog 2015-02-06 17:57:12

1

有很多代码不起作用。我只找到一个完美的作品。开始functions.php附:

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; 
} 
相关问题