首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录到wordpress将子目录添加到URL

问登录到wordpress将子目录添加到URL
EN

Stack Overflow用户
提问于 2014-05-05 13:33:12
回答 1查看 152关注 0票数 1

我最近创建了一个wordpress主题,并希望在主页上有我自己的登录区域。我正在使用的代码如下所示,但由于某种原因,它并不完全工作。它允许我登录,但当我登录时,我被重定向到example.com/wordpress/wordpress/而不是example.com/wordpress/,我不知道额外的子目录是从哪里来的。代码‘工作’是因为如果我在获取404'd后手动更改URL,我就会登录,但我不知道它为什么要这样做。

代码语言:javascript
复制
<?php $args = array(
        'echo'           => false,
        'redirect'       => site_url( $_SERVER['REQUEST_URI'] ), 
        'form_id'        => 'loginform',
        'label_username' => __( 'Username' ),
        'label_password' => __( 'Password' ),
        'label_remember' => __( 'Remember Me' ),
        'label_log_in'   => __( 'Log In' ),
        'id_username'    => 'user_login',
        'id_password'    => 'user_pass',
        'id_remember'    => 'rememberme',
        'id_submit'      => 'wp-submit',
        'remember'       => true,
        'value_username' => NULL,
        'value_remember' => false
    );
        wp_login_form( $args );  

    echo '<form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . esc_url( site_url( 'wp-login.php', 'login_post' ) ) . '" method="post">';
    ?>
    <table>
    <tr>
        <td>Username</td>
        <td>Password</td>
        <td></td>
    </tr>
    <tr>
        <td><?php echo '<input type="text" name="log" id="' . esc_attr( $args['id_username'] ) . '" class="input" value="' . esc_attr( $args['value_username'] ) . '" size="12" />'; ?></td>
        <td><?php echo '<input type="password" name="pwd" id="' . esc_attr( $args['id_password'] ) . '" class="input" value="" size="12" />'; ?></td>
        <td><?php echo '<input type="submit" name="wp-submit" id="' . esc_attr( $args['id_submit'] ) . '" class="button-primary" value="' . esc_attr( $args['label_log_in'] ) . '" />
                        <input type="hidden" name="redirect_to" value="' . esc_url( $args['redirect'] ) . '" />'; ?></td>
    </tr>
    </table>
    </form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 13:47:13

我假设您已经将WordPress安装到http://www.example.com/wordpress上了。代码中的问题是redirect数组的$args参数。你有:

'redirect' => site_url( $_SERVER['REQUEST_URI'] ),

site_url函数将返回您在WordPress中配置的基本URL,在本例中是http://www.example.com/wordpress,它将向它添加$_SERVER['REQUEST_URI']的内容,在本例中是/wordpress,所以您最终使用了http://www.example.com/wordpress/wordpress。

要解决这个问题,要传递给redirect的参数是要重定向到的/wordpress目录下的任何URL。示例:

'redirect' => site_url( '/some-example-page/' ),

将重定向到http://www.example.com/wordpress/some-example-page/,并且

'redirect' => site_url(),

将重定向到WordPress安装的基础http://www.example.com/wordpress。

如果从redirect数组中删除$args参数,则redirect的默认值将是从哪个页面调用该函数。

有关函数的更多信息,请参见url和表格关于WordPress代码的信息,关于$_SERVER['REQUEST_URI']如何工作的信息,请参阅这个堆栈溢出回答。我认为您正在使用WordPress Codex页面中有关wp_login_form的示例,如果没有将WordPress安装到域的根目录,则该页面上提供的重定向参数将导致这种行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23473824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档