我一直在寻找可以处理数小时的插件和片段,但没有成功。每个答案都不适用于我。我在菜单中有“登录”链接,通向 WooCommerce 的“我的帐户”页面,其中显示了登录表单。我希望客户在成功登录后返回到点击“登录”链接的页面。
wp_get_referer()$_SERVER["HTTP_REFERER"]如果放在挂钩的函数中,则不返回任何内容并返回我的帐户页面woocommerce_login_redirect(我使用 PHP 调试控制台进行检查)。
这是我的代码:
// Redirect user after login.
add_filter( 'woocommerce_login_redirect', 'wc_custom_user_redirect', 10, 2 );
function wc_custom_user_redirect( $redirect, $user ) {
// Get the first of all the roles assigned to the user
$role = $user->roles[0];
$dashboard = admin_url();
if (in_array($role, array('administrator', 'shop_manager', 'editor', 'author', 'contributor'))) {
$redirect = $dashboard;
} elseif (in_array($role, array('customer', 'subscriber'))) {
$redirect = $_SERVER["HTTP_REFERER"];
} else {
$redirect = $_SERVER["HTTP_REFERER"];
}
return $redirect;
}
这是我使用的过滤器出现在 WooCommerce 代码中的位置:
/**
* Process the login form.
*/
public static function process_login() {
$nonce_value = isset( $_POST['_wpnonce'] ) ? $_POST['_wpnonce'] : '';
$nonce_value = isset( $_POST['woocommerce-login-nonce'] ) ? $_POST['woocommerce-login-nonce'] : $nonce_value;
if ( ! empty( $_POST['login'] ) && wp_verify_nonce( $nonce_value, 'woocommerce-login' ) ) {
try {
$creds = array(
'user_password' => $_POST['password'],
'remember' => isset( $_POST['rememberme'] ),
);
qq_笑_17
守着星空守着你
幕布斯7119047