1

我想弄清楚如何在菜单中添加登录/注销。当我将此代码添加到 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

4 回答 4

5

注销链接:/?customer-logout=true

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

于 2014-03-25T03:51:07.303 回答
4

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

于 2013-03-04T23:01:55.943 回答
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;
}
于 2017-05-23T03:05:58.817 回答
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”

希望对有需要的人有所帮助

于 2013-10-24T15:16:28.917 回答