将登录/注销添加到Wordpress菜单

将登录/注销添加到Wordpress菜单,wordpress,woocommerce,Wordpress,Woocommerce,我正在试图找出如何将登录/注销添加到菜单中。当我将此代码添加到wordpress标题时,内容和侧边栏将消失。如何在不丢失页面其余部分的情况下将登录/注销添加到菜单中。我尝试过在设置菜单中添加它,但它与我正在使用的主题不兼容 <ul> <?php $myaccount_page_id = get_option( 'woocommerce_myaccount_page_id' ); if ( $myaccount_page_id  && !is_user_logge

我正在试图找出如何将登录/注销添加到菜单中。当我将此代码添加到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>

如果您使用类似的插件,只需在菜单中创建登录页面的链接即可。如果此人未登录,则显示“登录”;如果此人已登录,则显示“注销”。希望这有帮助

如果您使用类似的插件,只需在菜单中创建登录页面的链接即可。如果此人未登录,则显示“登录”;如果此人已登录,则显示“注销”。希望这有帮助

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

登录(下拉菜单)

  • 密码丢失
我的帐户(下拉菜单)

  • 更改密码
  • 密码丢失
  • 注销
然后在woocommerce-functions.php(:123)中显示或隐藏以下页面ID

我的登录页面id为“20”,我的帐户页面id为“18”


希望它能帮助有需要的人

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

登录(下拉菜单)

  • 密码丢失
我的帐户(下拉菜单)

  • 更改密码
  • 密码丢失
  • 注销
然后在woocommerce-functions.php(:123)中显示或隐藏以下页面ID

我的登录页面id为“20”,我的帐户页面id为“18”

希望它能帮助有需要的人

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

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

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

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

有许多代码不起作用。我刚找到一个完美的。使用以下命令启动functions.php:

add_filter('wp_nav_menu_items','my_account_loginout_link',10,2);
/**
*将我的帐户登录/注销添加到菜单
* 
*@见https://support.woothemes.com/hc/en-us/articles/203106357-Add-Login-Logout-Links-To-The-Custom-Primary-Menu-Area
*/
函数my_account_loginout_link($items,$args){
如果(是否已登录用户()&&&$args->theme\u location=='top'){//更改主题位置菜单以适应
$items.='
  • ';//更改注销链接,在这里它转到'shop',您可能想将其放到'myaccount' } elseif(!is_user_logged_in()&&&$args->theme_location=='top'){//更改主题位置菜单以适应 $items.='
  • '; } 退回$items; }
    有许多代码不起作用。我刚找到一个完美的。使用以下命令启动functions.php:

    add_filter('wp_nav_menu_items','my_account_loginout_link',10,2);
    /**
    *将我的帐户登录/注销添加到菜单
    * 
    *@见https://support.woothemes.com/hc/en-us/articles/203106357-Add-Login-Logout-Links-To-The-Custom-Primary-Menu-Area
    */
    函数my_account_loginout_link($items,$args){
    如果(是否已登录用户()&&&$args->theme\u location=='top'){//更改主题位置菜单以适应
    $items.='
  • ';//更改注销链接,在这里它转到'shop',您可能想将其放到'myaccount' } elseif(!is_user_logged_in()&&&$args->theme_location=='top'){//更改主题位置菜单以适应 $items.='
  • '; } 退回$items; }
    我喜欢这样简单的答案:)我喜欢这样简单的答案:)
    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;
    }
    
    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;
    }