[英]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_url和wp_login_form,有關$_SERVER['REQUEST_URI']
工作原理,請參見堆棧溢出答案 。 我認為您正在使用WordPress Codex頁面上有關wp_login_form
的示例,如果未將WordPress安裝到域的根目錄,則該頁面上提供的重定向參數將導致此行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.