Php 使用w3总缓存添加重写规则wordpress

Php 使用w3总缓存添加重写规则wordpress,php,wordpress,.htaccess,mod-rewrite,url-rewriting,Php,Wordpress,.htaccess,Mod Rewrite,Url Rewriting,我试图重写规则,以搜索引擎优化友好。 下面是我放在theme function.php中的代码 add_action('init', 'add_my_rewrite_rule'); function add_my_rewrite_rule(){ add_rewrite_rule('^quiz/([^/]*)/([^/]*)?','index.php?pagename=quiz&quiztitle=$matches[1]&quizid=$matches[2]','top')

我试图重写规则,以搜索引擎优化友好。 下面是我放在theme function.php中的代码

add_action('init', 'add_my_rewrite_rule');
function add_my_rewrite_rule(){
    add_rewrite_rule('^quiz/([^/]*)/([^/]*)?','index.php?pagename=quiz&quiztitle=$matches[1]&quizid=$matches[2]','top');
}

add_filter('query_vars','set_quiz_query_var');
  function set_quiz_query_var($vars) {
  array_push($vars, 'quiztitle');
  array_push($vars, 'quizid');
  return $vars;
}
因为这段代码不起作用,我还试图重写.htaccess规则

RewriteRule ^quiz/([^/]+)/([^/]+)$ /index.php?pagename=quiz&quiztitle=$1&quizid=$2 [NC,R=301,L]

我猜这是因为w3总缓存。我花了一整晚的时间,但一个人无法解决问题……

刷新重写规则--转到设置永久链接并单击“保存”

很抱歉回答了我自己的问题!我花了一整夜的时间来找出这个问题


我使用了add_filter而不是add_操作,结果很好

add_filter('rewrite_rules_array','add_my_rewrite_rule');
function add_my_rewrite_rule($rules)
{
  $newrules = array();
  $newrules['^quiz/([^/]+)/([^/]+)/?'] = 'index.php?pagename=quiz&quiztitle=$matches[1]&quizid=$matches[2]';
  return $newrules + $rules;
}

我在哪里可以刷新重写规则?转到“管理”部分的“设置”并永久链接。如果重新保存,wp将重置pl。有php可以做到这一点,但它是一次性的,所以最好不要编写代码,除非它是一个激活挂钩。我使用了添加过滤器,而不是添加操作,它工作了!!