簡體   English   中英

登錄wordpress將一個子目錄添加到URL

[英]Logging into wordpress adds a subdirectory to the URL

我最近創建了一個wordpress主題,並希望在主頁上有自己的登錄區域。 我正在使用的代碼在下面,但是由於某種原因它無法正常工作。 它允許我登錄,但是當我這樣做時,我被重定向到example.com/wordpress/wordpress/而不是example.com/wordpress/,因此我無法弄清楚額外子目錄的來源。 代碼“有效”是因為,如果我在獲取404之后手動更改了網址,則我已經登錄,但是我不知道為什么首先要這樣做。

<?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>

我假設您已將WordPress安裝到http://www.example.com/wordpress 您的代碼中的問題是$args數組的redirect參數。 你有:

'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將任何網頁的功能是從調用。

有關功能的更多信息,請參見WordPress Codex上的site_urlwp_login_form,有關$_SERVER['REQUEST_URI']工作原理,請參見堆棧溢出答案 我認為您正在使用WordPress Codex頁面上有關wp_login_form的示例,如果未將WordPress安裝到域的根目錄,則該頁面上提供的重定向參數將導致此行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM