ユーザーがログインするiframeポップアップがあります。問題は、ユーザーがログインすると、リダイレクトが親要素ではなくiframe内のページをロードすることです。
これを機能させるには、このコードをどこかに挿入する必要があることを知っています:
window.top.location.href = "http://www.site.com";
リダイレクト ユニットのコードは次のとおりです。
function login_redirect( $redirect_to, $request, $user ) {
global $theme_my_login;
// Determine the correct referer
if ( !$http_referer = wp_get_original_referer() )
$http_referer = wp_get_referer();
// Remove some arguments that may be present and shouldn't be
$http_referer = remove_query_arg( array( 'instance', 'action', 'checkemail', 'error', 'loggedout', 'registered', 'redirect_to', 'updated', 'key', '_wpnonce', 'reauth' ), $http_referer );
// Make sure $user object exists and is a WP_User instance
if ( !is_wp_error( $user ) && is_a( $user, 'WP_User' ) ) {
if ( is_multisite() && empty( $user->roles ) ) {
$user->roles = array( 'subscriber' );
}
$redirection = array( 'login_type' => 'default' );
foreach ( (array) $user->roles as $role ) {
if ( $theme_my_login->options->get_option( array( 'redirection', $role ) ) ) {
$redirection = $theme_my_login->options->get_option( array( 'redirection', $role ) );
break;
}
}
if ( 'referer' == $redirection['login_type'] ) {
// Send 'em back to the referer
$redirect_to = $http_referer;
} elseif ( 'custom' == $redirection['login_type'] ) {
// Send 'em to the specified URL
$redirect_to = $redirection['login_url'];
// Allow a few user specific variables
$replace = array( '%user_id%' => $user->ID, '%user_login%' => $user->user_login );
$redirect_to = str_replace( array_keys( $replace ), array_values( $replace ), $redirect_to );
}
}
// If a redirect is requested, it takes precedence
if ( !empty( $request ) && admin_url() != $request && admin_url( 'profile.php' ) != $request )
$redirect_to = $request;
// Make sure $redirect_to isn't empty
if ( empty( $redirect_to ) )
$redirect_to = get_option( 'home' );
return $redirect_to;
}