登錄注冊表只能像彈出視窗一樣顯示,所以我進行了重定向,以避免未登錄用戶的默認 myaccount 頁面。
add_action( 'template_redirect', 'wish_custom_redirect' );
function wish_custom_redirect() {
global $wp;
if (!is_user_logged_in() && is_page('my-account') ) {
wp_redirect( '/' );
exit;
}
}
要查看他們的帳戶頁面,用戶必須登錄或在彈出表單中注冊。但是有一個問題 - /my-account/lost-password/, my-account/reset-password/ 是 myaccount 的 children-endpoints。他們不必為未登錄的用戶進行重定向。我試著那樣做
add_action( 'template_redirect', 'wish_custom_redirect' );
function wish_custom_redirect() {
global $wp;
if (!is_user_logged_in() && is_page('my-account') && !is_page('my-account/lost-password/') ) {
wp_redirect( '/' );
exit;
}
}
但它仍然重定向。也許這是一個糟糕的解決方案,有更好的方法嗎?或者如何正確地進行此重定向?
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
僅在注銷時重定向有幫助,但不會避免用戶看到默認頁面。他們可以注銷,然后回傳上一頁 /myaccount,并查看默認注冊表。
uj5u.com熱心網友回復:
有多種方法可以做到這一點,你可以使用is_wc_endpoint_url函式,或者你也可以使用global $wp它的屬性呼叫request。
既然你已經嘗試過了global $wp,那我就采取同樣的方法。
您的代碼將是這樣的:
add_action( 'template_redirect', 'wish_custom_redirect' );
function wish_custom_redirect() {
global $wp;
if (
!is_user_logged_in()
&&
('my-account' == $wp->request)
&&
('lost-password' != $wp->request)
)
{
wp_safe_redirect( site_url() );
exit;
}
}
它已經在 woocommerce 上進行了測驗5.7并且運行良好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/368427.html
標籤:php WordPress的 重定向 求购 钩子商务
