1

メニューにログイン/ログアウトを追加する方法を理解しようとしています。このコードをワードプレスヘッダーに追加すると、コンテンツとサイドバーが消えます。ページの残りの部分を失うことなく、ログイン/ログアウトをメニューに追加するにはどうすればよいですか。設定メニューに追加してみましたが、使用しているテーマで動作しません。

<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 に答える