添加登录/注销菜单Woocommerce Wordpress

时间:2013-03-02 21:52:43

标签: 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 个答案:

答案 0 :(得分:4)

如果您使用Theme My Login之类的插件,则可以在菜单中创建指向登录页面的链接。如果此人未登录,它将显示“登录”,如果此人登录则显示“登出”。希望这有帮助!

答案 1 :(得分:2)

退出链接: /?客户注销=真

登录链接发送到“我的帐户”页面以触发登录: /我的账户/

答案 2 :(得分: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;
}

答案 3 :(得分:0)

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

登录(下拉菜单)

  • 忘记密码

我的帐户(下拉菜单)

  • 更改密码
  • 忘记密码
  • 注销

然后在woocommerce-functions.php(:123)

中显示或隐藏以下页面ID
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”

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