Woocommerce Login Redirect não está funcionando

Atualmente, estou tentando mudar o URL de redirecionamento do Woocommerce para o login somente quando os usuários fizeram o login de uma página específica. Então, eu tentei dessa maneira na minha página de modelo:

$_SERVER['REQUEST_URI'])); ?> 

Então, eu vi o usuário ainda ser redirecionado para o padrão (minha conta), então usei o gancho de login dessa forma:

 function share_login_redirect( $redirect ) { if( strtr($_SERVER['REQUEST_URI'],array('/partage','/share')) ){ $redirect = get_site_url().$_SERVER['REQUEST_URI']; } return $redirect; } add_filter( 'woocommerce_login_redirect', 'share_login_redirect', 10, 2 ); 

Todas essas técnicas não funcionaram para mim. Sabendo que $redirect = "https://mysite/share/?param=xx" que estou fazendo errado lá?

2017-08-29 EDIT: Se alguém tiver o mesmo problema que eu fiz, é possível que um plugin use o mesmo gancho do que você e tenha uma prioridade maior que a sua, o que significa que o redirecionamento não funcionará até você mudar sua prioridade. Por favor, veja a minha resposta abaixo.

Solutions Collecting From Web of "Woocommerce Login Redirect não está funcionando"

Tente mudar strtr para strpos . No entanto, você não pode dar uma matriz para agulhas que eu não acho. Você terá que criar outra function para isso.

 function strposa($haystack, $needles=array(), $offset=0) { $chr = array(); foreach($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } if(empty($chr)) return false; return min($chr); } 

Use esta function em vez de strtr

Eu descobri que o meu problema é prioridade. Alguns outros plugins estavam usando uma prioridade de 1000, então eu tive que aumentar minha prioridade ao declarar o gancho. Dessa maneira:

 add_filter( 'woocommerce_login_redirect', 'share_login_redirect', 1100, 2 ); 

ao invés de

 add_filter( 'woocommerce_login_redirect', 'share_login_redirect', 10, 2 );