使用重写的页面(登录页面)获取URL变量

时间:2013-06-26 作者:William

作为一个更大项目的一部分,我正在尝试在以下地址进行所有登录活动:

www.url。com/登录

因此,可以在以下位置找到指向允许用户重置密码的表单的链接:

www.url。com/登录?动作=丢失密码

但是,wp登录。php没有正确读取此内容,当我转到上面的地址时,我得到了正常的登录表单。

我是这样设置的:

add_action( \'init\', \'add_virtual_page_template\' );
function add_virtual_page_template()
{
    global $wp, $wp_rewrite;

    $wp->add_query_var( \'template\' );

    add_rewrite_endpoint( \'login\', EP_PERMALINK | EP_PAGES );
    add_rewrite_rule( \'login/?\', \'index.php?template=login\', \'top\' );

    add_rewrite_rule( \'login/?\', \'index.php?template=login\', \'top\' );

    $wp_rewrite->flush_rules();
}

add_action( \'template_redirect\', \'add_virtual_page_redirect\' );
function add_virtual_page_redirect()
{
    global $wp;

    $queryvar = get_query_var(\'template\');

    if ($queryvar && $queryvar == \'login\')
    {
        include(site_url(\'wp-login.php\'));
        exit();
    }

    if ($queryvar == \'mylogin\')
    {
        include( get_stylesheet_directory() . \'/page-login.php\' );
        exit();
    }
}
我错过了什么?

1 个回复
SO网友:ksr89

如果您希望而不是重定向到wp-login 用户重定向到login 第页,然后使用以下代码。它将用户重定向到login 显示登录表单的页面。

add_filter(\'site_url\',  \'wplogin_filter\', 10, 3);
function wplogin_filter( $url, $path, $orig_scheme ){
    $old = array( "/(wp-login\\.php)/");
    $new = array( "login/");
    return preg_replace( $old, $new, $url, 1);
}

add_action(\'init\',\'possibly_redirect\');
function possibly_redirect(){
    global $pagenow;
    if( \'wp-login.php\' == $pagenow ){
        wp_redirect(site_url( $path = \'login\'));
    exit();
    }
}
在登录表单中,检查操作的值。供登录使用wp_signon() 作用

if(!isset($_REQUEST[\'action\'])) { ?>
      <div>Login with the Email
        <form id="login-form" action="<?php echo $_SERVER[\'REQUEST_URI\'] ?>" method="post">
          <table style="float: left;">
            <tr>
              <td><label>User Name</label></td>
              <td>
                <input type="text" name="user_name" id="user_name" placeholder="Enter your username">
              </td>
            </tr>
            <tr>
              <td><label>Password</label></td>
              <td>
                <input type="password" name="password" id="password" placeholder="Enter password"><br>
                <a href="<?php echo site_url(\'login/?action=lostpassword\') ?> "> Forgot Your Password ? </a><br>
              </td>
            </tr>
            <tr>
              <td></td>
              <td><input type="submit" name="submit" id="login-submit" value="Login"></td>
            </tr>
          </table>
        </form>
<?php
}
密码丢失。以相同的格式创建表单login page

if(isset($_REQUEST[\'action\']) && \'lostpassword\'== $_REQUEST[\'action\'])
{
  ?>

  <div id="tab3_login" class="tab_content_login" >
   <p>Enter your username or email to reset your password.</p>
   <form method="post" action="<?php echo site_url(\'login/?action=tg_pwd_reset\') ?>" class="wp-user-form">
    <div class="username">
      <label>Username or Email : </label>
      <input type="text" name="user_login" value="" size="20" id="user_login" />
      <?php toolTip(\'user_login\', \'Username\');?>
    </div>
    <input type="submit" name="user-submit" value="<?php _e(\'Reset my password\'); ?>" class="user-submit" tabindex="1002" />
  </form>
</div>
<?php
}

结束

相关推荐