当前位置: 首页 > 知识库问答 >
问题:

登录到wordpress添加一个子目录到URL

柴华灿
2023-03-14

我最近创建了一个wordpress主题,希望在主页上有自己的登录区域。下面是我正在使用的代码,但由于某些原因,它不太管用。它允许我登录,但当我登录时,我会被重定向到示例。com/wordpress/wordpress/而不是示例。com/wordpress/我不知道额外的子目录是从哪里来的。代码“有效”,因为如果我在获得404'd后手动更改URL,我就登录了,但我不明白它为什么要这么做。

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

共有1个答案

安泰平
2023-03-14

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

“重定向”=

site_url函数将返回您在WordPress中配置的基本URL,在本例中是http://www.example.com/wordpress,最后它将向其添加$_SERVER['REQUEST_URI'],在这种情况下是/wordpress,所以您最终会得到http://www.example.com/wordpress/wordpress

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

“重定向”=

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

“重定向”=

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

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

有关函数的更多信息,请参阅WordPress Codex上的site_url和wp_login_form,以及如何使用$_SERVER['REQUEST_URI']的堆栈溢出答案。我认为您正在使用WordPress Codex页面中关于wp_login_form示例,如果WordPress没有安装到域的根,该页面上提供的重定向参数将导致这种行为。

 类似资料:
  • 我将Wordpress站点移动到新服务器。该站点安装在子目录中,并且。根目录中的htaccess转发给它,如下所示: 我已经更改了数据库中wp_options表中的site_url和主条目。一切都工作正常-除非我访问site.com/wp-admin登录-它重定向到登录页面这样: 地点com/wp登录。php?重定向到=http://site.com/wpfolder/wp-admin/ 当我输入

  • 问题内容: 我正在尝试从特定目录导入模块。 问题是,如果我使用附加路径然后打开python解释器,则该目录将添加到列表sys.path的末尾。如果我在打开python解释器之前导出变量,则目录将添加到列表的开头。在后一种情况下,我可以导入模块,而在前一种情况下,我不能。 有人可以解释为什么会发生这种情况,并给我一个 在 python脚本中将其添加到开始的解决方案吗? __ 问题答案: 如文档所述,

  • 我试图从一个特定的目录中导入一个模块。 问题是如果我使用<code>sys.path。append(moddirectory)要附加路径,然后打开python解释器,目录将添加到列表sys.path的末尾。如果我在打开python解释器之前导出变量,那么该目录将被添加到列表的开头。在后一种情况下,我可以导入模块,但在前一种情况中,我不能。 有人可以解释为什么会发生这种情况,并给我一个解决方案,在

  • 在Woocommerce for WordPress上,当您在产品页面上单击登录时,当您登录时,您将从您的帐户重定向到仪表板页面,而不是之前阅读的页面。 我正在尝试这样做,在登录前重定向到上一页,如果我的站点上没有上一页,则重定向到主页。 我已经试过了,但每次我都被重定向到主页。 有什么想法吗?

  • 我有一个这样结构的小项目: 我在myproject中添加了一个CmakeLists.txt文件,并添加了子目录mylib和myprog。子目录也有一个CMakeList。现在,当我运行cmake时,两个模块都是正确构建的,除非我想在我的程序中使用mylib。我已经找到了全局CmakeList定义的解决方案。但是我更喜欢在mylib中定义这个,以便mylib/包含被添加到项目的包含路径中。我想要一个

  • 问题内容: 我有一个示例Java项目包 打包com.example.testing; 用这样的文件树 和gradle脚本: 现在我想向该项目中添加一些模块,我的文件夹将是这样的 如何在gradle脚本中添加新的源代码? 问题答案: 我同意@JB Nizet关于遵守标准约定的意见。如果您仍然坚持要成为无政府主义者: 您已经在源集中声明了,为什么不还要添加并且呢?您可以将它们添加到相同的源集,也可以根