在Wordpress中使用自定义重写规则


Using custom rewrite rules in Wordpress

我正在尝试在WordPress中创建自定义重写规则,以便我可以根据查询字符串中的内容将数据传递到页面。

我的页面工作正常:/retailers-a-z/?merchant=some_merchant然后还有/retailers-a-z/?merchant=some-merchant&offer=some-offer

我第一次尝试在。htaccess中创建一个重写规则,但因为意识到WordPress有自己的内部重定向数据库。所以经过大量的研究,我设法想出了以下代码…然而,它仍然不起作用。每当我尝试访问/retailers-a-z/some-retailer/retailers-a-z/some-retailer/some-offer只加载首页

:显然也

function wp_raz_rules()
{
  add_rewrite_rule(
    'retailers-a-z/([^/]+)/?$',
    'index.php?merchant=$matches[1]',
    'top'
  );
  add_rewrite_rule(
    'retailers-a-z/([^/]+)/([^/]+)/?$',
    'index.php?merchant=$matches[1]&offer=$matches[2]',
    'top'
  );
  add_rewrite_tag('%merchant%', '([^/]+)');
  add_rewrite_tag('%offer%', '([^/]+)');
}
add_action('init', 'wp_raz_rules');
function wp_raz_vars($vars)
{
  $vars[] = 'merchant';
  $vars[] = 'offer';
  return $vars;
}
add_filter('query_vars', 'wp_raz_vars');

我相信我可以用get_query_var('merchant')get_query_var('offer')而不是$_GET[]访问它们

任何想法?谢谢:)

通过在查询字符串中显式定义页面名称来修复此问题。

index.php?pagename=retailers-a-z&merchant=$matches[1]&offer=$matches[2]

不能百分之百确定这样做是否正确