Bucky208
Bucky208

Reputation: 86

Wordpress add rewrite rule redirecting instead of "cloaking"

I made a wordpress "add_rewrite_rule" to access 2 GET variables in a clean way.

But so far, it only redirects instead of "cloaking", it also loses the GET variables. (The site uses polylang as a plugin)

I tried including the add_rewrit_rule, adding the values as "tags", ...

function activateresetrule() {

    add_rewrite_rule(
        '^reset/([^/]*)/([^/]*)/?$',
        'index.php?page_id=1330&email=$matches[1]&uuid=$matches[2]',
        'top'
    );

    add_rewrite_rule(
        '^activate/([^/]*)/([^/]*)/?$',
        'index.php??page_id=1325&email=$matches[1]&uuid=$matches[2]',
        'top'
    );
    //delete when fixed
    global $wp_rewrite;
    $wp_rewrite->flush_rules(false);  
}
add_action( 'init', 'activateresetrule' );

add_filter( 'query_vars', 'activateresetrule_filter' );
function activateresetrule_filter( $query_vars ){
    $query_vars[] = 'email';
    $query_vars[] = 'uuid';
    return $query_vars;
}

Goal: https://www.site.be/reset/dfsdf/ddfsfds/ should be the same as https://www.site.be/reset&email=dfsdf&uuid=ddfsfds

Current redirect: /dashboard/password-reset-mail/ (no GET variables) (This is page_id 1330)

Thankyou

Upvotes: 1

Views: 1368

Answers (1)

Bucky208
Bucky208

Reputation: 86

Found the solution:

Existing WP pagina: /dashboard/password-reset-mail/[email protected]&uuid=96819e7d-c124-4610-9ae9-62ddb4adf678

The new URL: /reset/[email protected]/96819e7d-c124-4610-9ae9-62ddb4adf678/

functions.php

function rewriteurl() {
  global
  $wp,$wp_rewrite;
  $wp->add_query_var('email');
  $wp->add_query_var('uuid');
  $wp_rewrite->add_rule('^reset/([^/]*)/([^/]*)/?$', 'index.php?post_type=dashboard&page_id=1330&email=$matches[1]&uuid=$matches[2]', 'top');

  // Reset permalinks, delete after programming
  $wp_rewrite->flush_rules(false);  
}

thepage.php

$email = $wp->query_vars['email']; echo $email;
$uuid = $wp->query_vars['uuid']; echo $uuid; ?>

Upvotes: 2

Related Questions