登录时的Wordpress重定向

时间:2013-04-11 14:55:00

标签: wordpress redirect login preg-replace preg-match-all

我们有一个双语的Wordpress主题。英文版本位于 mydomain.com ,捷克版本位于虚拟目录 mydomain.com/cs/

当用户登录 mydomain.com/login 时,会将其重定向到 mydomain.com/dashboard ,如下面的代码所示(即页面名称) 。我需要使用 mydomain.com/cs/login 登录的用户才能登录 mydomain.com/cs/dashboard

该功能使用的代码如下:

<?php wp_login_form( apply_filters( 'atcf_shortcode_profile_login_args', array( 'redirect' => isset ( $edd_options[ 'profile_page' ] ) ? get_permalink( $edd_options[ 'profile_page' ] ) : home_url() ) ) ); ?>

home_url 是返回网站完整网址的内容。有什么想法我可以通过转义当前目录(/ login)来实现重定向吗?

1 个答案:

答案 0 :(得分:1)

您可以检查$_SERVER["REQUEST_URI"]值,看它是否以/cs/开头,然后相应地动态更新个人资料页面值。

// The current URI (does not incude host/domain)
$uri = $_SERVER["REQUEST_URI"];
// The home URL
$redirect = home_url();

// $edd_options[ 'profile_page' ] must return the page ID for get_permalink to work
if ( isset( $edd_options[ 'profile_page' ] ) ) {

    // The profile URL. 
    $profile_page_id = $edd_options[ 'profile_page' ];
    $redirect = get_permalink( $profile_page_id );

    // Check if the URI starts with /cs/
    if ( strpos( $uri, '/cs/' ) == 0 ){
        // Explode into an array
        $url_array = explode( '/', $profile_page );

        // Insert /cs/ into array
        $url_array = array_slice($url_array, 0, 3, true) +
                 array("x"=>"cs") +
                 array_slice($url_array, 3, count($url_array)-3, true);

        // Implode back to a string
        $redirect = implode( '/', $url_array );
    }
}

// Set up params to send to login form
$args = apply_filters( 'atcf_shortcode_profile_login_args', array( 'redirect' => $redirect ) );
wp_login_form( $args );