我想弄清楚如何在菜单中添加登录/注销。当我将此代码添加到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>
答案 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)
中显示或隐藏以下页面IDfunction 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”
希望它可以帮助任何有需要的人