使用URL参数进行查询重写

时间:2019-04-14 02:37:57

标签: php wordpress

我无法使查询重写按预期工作。理想的结果是将前往wpsite.com/foo/bar/2/的请求重写为wpsite.com/foo/bar/?my_id=2

functions.php

// Add custom URL parameters
function add_custom_query_var( $vars ){
  $vars[] = "my_id";
  return $vars;
}

add_filter( 'query_vars', 'add_custom_query_var' );

// Add rewrite for my_id
function custom_rewrite_basic() 
{
    add_rewrite_rule('^foo/bar/([0-9]+)/?', 'foo/bar/?my_id=$matches[1]', 'top');
}

add_action( 'init', 'custom_rewrite_basic' );

bar.php

$my_id = filter_input( INPUT_GET, "my_id", FILTER_SANITIZE_NUMBER_INT );

var_dump($my_id);

当我致电/foo/bar/?my_id=2时看到2,当我使用/foo/bar/2/时却没有。

更新

刷新缓存后,结果得到改善。但是,无论传递了参数(3256205),$my_id都以1的形式返回。

wpsite.com/foo/bar/?my_id=2显示2

wpsite.com/foo/bar/2/显示1

1 个答案:

答案 0 :(得分:1)

此问题通过将$matches[1]更改为$1来解决:

// Add rewrite for my_id
function custom_rewrite_basic() 
{
    add_rewrite_rule('^foo/bar/([0-9]+)/?', 'foo/bar/?my_id=$1', 'top');
}

add_action( 'init', 'custom_rewrite_basic' );

当然还有刷新缓存。