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

从URL中使用$GET参数,创建一个新的重定向URL(Wordpress)

苏嘉歆
2023-03-14

我正在Wordpress中使用一个自定义登录页面,并且我在functions.php中安装了一个脚本,该脚本重定向到一个自定义的“错误登录”页面(在登录URL中添加参数),因此它可以显示同一页面中的错误,而不是本机登录页面。

但在某些情况下,当某人在尝试访问私有页面后被重定向到该登录页面时,该登录页面已经包含了一些参数。

例如:

>

  • 常规情况:他们尝试访问:website.com/login。如果尝试登录时出现错误,我的脚本重定向到website.com/login?login=empty,他们可以再试一次。

    有问题的情况:它们试图访问website.com/protected-page/private时,它们被自动重定向到website.com/login?members=%2fprotected-page%2fprivate%2。如果尝试登录时出现错误,我的脚本实际上会重定向到website.com/login?login=empty(与常规情况相同),而我所要实现的是,在出现错误时重定向到website.com/login?members=%2fprotected-page%2fprivate%2&login=empty。

    在URL中保留此“?members”参数允许表单在成功登录后重定向到它们之前试图访问的前一页。否则,在常规情况下,它们将被重定向到常规仪表板。

    实际管理错误时重定向的脚本如下所示:

    add_action('authenticate','check_username_password',1,3);函数check_username_password($login,$username,$password){

    $referrer = $_SERVER['HTTP_REFERER'];
    
    if( !empty( $referrer ) && !strstr( $referrer,'wp-login' ) && !strstr( $referrer,'wp-admin' ) ) { 
    if( $username == "" || $password == "" ){
        wp_redirect( get_permalink( 20 ) . "?login=empty" );
        exit;
    }
    }
    

    因此这里创建错误URL的重要部分是:

    wp_redirect( get_permalink( ID ) . "?login=empty" );
    

    如果执行“echo$_get[”wlfrom“];”,则可以使用“$_get[”members“]”获得其他UTL参数。它成功地在页面中显示参数。但即使看起来如此简单,我也无法将这个参数添加到URL中。到目前为止我所尝试的:

    #1. wp_redirect( get_permalink( ID ) . "?members=" . $_GET["members"] . "?login=empty" );
    #2. wp_redirect( get_permalink( ID ) . "?members=" . echo $_GET["members"] . "?login=empty" );
    #3. $param = array('members');
    wp_redirect( get_permalink( ID ) . "?members=" . $param . "?login=empty" );
    //This one returns website.com/?members=array/?login=empty
    #4.$param = $_SERVER["PHP_SELF"];
    wp_redirect( $param . "?login=empty" );
    // This one I cannot use because it displays the native login URL, not my permalink, that's why I need to use "get_permalink" for the first part of the URL
    

    以及其他各种解决方案。我是一个新手,所以我找不到其他的解决方案来创建这个新的URL的基础上前一个,我也不确定是否使用GET的方式也去。

    为了使用当前URL中的参数,我应该用什么填充“wp_redirect”?

    谢谢!

  • 共有1个答案

    云浩然
    2023-03-14

    在wordpress自定义登录表单中添加一个隐藏字段

    <input type="hidden" name="members" value="<?php echo @$_REQUEST['members']; ?>">
    

    并更改这些

    wp_redirect( get_permalink( ID ) . "?login=empty" );
    

    <?php
    $queryarg='?login=empty';
    if(isset($_REQUEST['members']) && $_REQUEST['members']!=''){
        $queryarg .='&members='$_REQUEST['members'];
    }
    wp_redirect( get_permalink( ID ) . $queryarg );
    
    ?>
    
     类似资料:
    • 问题内容: 在JavaScript中,我想将一个变量设置为URL的GET部分中参数的值。 因此在JavaScript中: 会是什么? 问题答案: 这是一些。

    • 问题内容: 我正在尝试将URL作为php中的url参数传递,但是当我尝试获取此参数时我什么也没收到 我正在使用以下网址形式: 我正在努力通过: 但是什么也没回来。问题是什么? 问题答案: 不是函数或语言构造,而只是一个变量(数组)。尝试: 特别是,它是一个超全局变量:一个由PHP填充的内置变量,并且在所有作用域中都可用(您可以在没有global关键字的函数内部使用它)。 由于该变量可能不存在,因此

    • 问题内容: 我正在尝试让Alamofire在GET请求中发送以下参数,但它发送的是乱码: 这是我的代码: 输出 {“ $ and”:[{“ name”:{“ $ bw”:“ duke”},“ country”:“ gb”}]} 这是我的参数要求: 这是AlamoFire发送的: 如您所见,filter参数是一团糟。我究竟做错了什么? 问题答案: 默认情况下,Alamofire使用POST正文中的“

    • 转到http://localhost:8080的结果是重定向:/birdspotting的打印

    • 在Spring Boot中创建代理服务,它监听多个端口,并将GET请求重定向到一个新的URL 请求仍然来自的旧URL-http://localhost:7010/dntservice?cptyxxx=89959623213123和portfolioxxx=03880774324234到新URL-http://wasp-uat-na.net/dntservice?cptyxxx=8995962321

    • 问题内容: 如何将与其他URL不匹配的流量重定向回首页? urls.py: 就目前而言,最后一个条目将所有“其他”流量发送到主页,但是我想通过HTTP 301或302进行重定向。 问题答案: 你可以尝试称为 RedirectView `from django.views.generic.base import RedirectView urlpatterns = patterns(‘’, url(