2015-02-23 116 views
0

我有一個woocommerce網站,啓用了產品評論(產品評論使用WordPress評論系統)。當沒有登錄訪客,這是當前顯示:更改woocommerce產品評論登錄鏈接

You must be logged in to post a comment. 

logged in鏈接到默認mysite.com/wp-login.php?redirect_to=myproduct-url。當訪問者點擊鏈接時,他們被帶到默認的WordPress登錄頁面。

但是,woocommerce有自己的帳戶登錄/註冊頁面,我想將訪問者重定向到woocommerce頁面。我還想保留自動?redirect_to=查詢,以便用戶可以在他們登錄後重定向回原始產品頁面。

我知道我應該爲我的主題的function.php添加一個函數,修改該默認鏈接行爲,但我使用哪種過濾器/操作?

[編輯] 我發現這個

add_filter('login_url', 'my_login_page', 10, 2); 
function my_login_page($login_url, $redirect) { 
    return home_url('/my-login-page/?redirect_to=' . $redirect); 
} 

http://codex.wordpress.org/Plugin_API/Filter_Reference/login_url

所以現在我可以修改登錄鏈接使用我的登錄頁這是偉大的,但因爲它是現在使用woocommerce登錄,我發現woocommerce登錄重定向到我的帳戶頁面,並且不尊重?redirect_to=myproduct-url

有關如何讓woocommerce登錄遵循?redirect_to=myproduct-url的任何想法?

回答

0

您可以通過下面的代碼實現它:

add_filter('login_url', 'my_login_page', 10, 2); 
function my_login_page($login_url, $redirect) { 
    return home_url('/my-login-page/?redirect_to=' . $redirect); 
} 

add_filter('woocommerce_login_redirect', 'rohil_login_redirect'); 

function rohil_login_redirect($redirected_to) { 

    $page_url = $_SERVER['REQUEST_URI']; //To get string from the URL 
    $current_page_url = get_permalink(); //To get URL of the current page which is MY ACCOUNT 
    $encoded_url = explode('redirect_to%3D', $page_url); //To get encoded URL 
    $decoded_url = rawurldecode($encoded_url[1]); //To get decoded URL 
    $redirection_page = explode(home_url(), $decoded_url); //Redirection page 

    $redirected_to = home_url().$redirection_page[1]; 
    return $redirected_to; 
} 

完全未經測試。所以請讓我知道的輸出。

+0

感謝您的這一點,但我試過,登錄後沒有工作,只是重定向到首頁? – user892134 2015-03-01 13:16:32

+0

您需要在'function rohil_login_redirect'中進行一點點調試,因爲相同的代碼對我來說工作正常。 – 2015-03-02 04:36:24