我在我的wordpress网站上使用WooCommerce,我希望允许客户登录并注销,如果他们愿意,以便他们可以查看他们所订购内容的帐户详细信息。
因此,我想要做的是在显示商店页面时在顶部菜单上显示“登录”按钮。 我还希望登录按钮知道客户是否已登录,然后更改为注销按钮。
在Woocommerce支持上,他们表示他们不再使用短代码进行注销功能,而是使用端点。以下是详细信息https://support.woothemes.com/hc/communities/public/questions/201174057-No-way-for-a-customer-to-log-out-Woocommerce-account-widget
然而,这并不像预期的那样奏效。所以我的问题是 1.如何使用注销/登录按钮检测用户是否为登录客户。 2.如何仅为商店页面制作自定义菜单(我不希望登录/注销按钮出现在整个网站的所有菜单上)
非常感谢提前
答案 0 :(得分:0)
您根本不需要短代码或端点...或WooCommerce。 wp_loginout()
是一个核心WordPress函数,如果您没有登录则显示登录链接,如果您是登录链接则显示。
在codex中有一个如何向菜单添加登录/退出链接的示例。
只需将此代码添加到您的父或子主题functions.php文件中,即可在WordPress的Twenty Fourteen默认主题的辅助导航菜单中显示登出链接。
add_filter( 'wp_nav_menu_secondary_items','wpsites_loginout_menu_link' );
function wpsites_loginout_menu_link( $menu ) {
$loginout = wp_loginout($_SERVER['REQUEST_URI'], false );
$menu .= $loginout;
return $menu;
}
我认为secondary
中的wp_nav_menu_secondary_items
只是将项目添加到ID为secondary的菜单中。你可以用这种方式定位你想要的任何菜单。或者您可以将其删除,并通过wp_nav_menu_items
将链接添加到所有菜单。
答案 1 :(得分:0)
重要 - 请在编辑header.php之前备份您的wordpress文件和数据库
尝试将此代码放入“ header.php ”
更改 “www.yoursite.com”到您的网站名称
<!-- start of by me -->
<?php
add_action( 'loop_start', 'personal_message_when_logged_in' );
function personal_message_when_logged_in() {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
echo $current_user->user_login;
} else {
$items .= '<a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">Register</a>';
echo $items;
}
}
add_action( 'loop_start', 'login_logout_status' );
function login_logout_status() {
if ( is_user_logged_in() ) {
$login_status .= '<a href="http://www.yoursite.com/my-
account/customer-logout/">Log out</a>';
echo $login_status;
} else {
$items .= '<a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">Log in</a>';
echo $items;
}
}
?>
<ul class="headerlinks">
<li><?php personal_message_when_logged_in(); ?></li>
<li><?php login_logout_status(); ?></li>
</ul>
<!-- end of by me -->
<强>样式强>
/* start of my style */
ul.headerlinks {
position:relative !important;
float: right;
z-index:500 !important;
background-color: #e3e3e3;
margin-bottom: 10px;
}
ul.headerlinks li {
list-style: none !important;
display:inline !important;
margin:0 5px 0 0 !important;
padding:0;
}
/* end of my style */