我正在尝试匹配以下网址:
planets/animals-and-more/animal/human
要:
index.php?pagename=animal&animal-name=human
页面'动物'有一个自定义的page-animal.php模板,可以输入动物名称'查询变量并将其吐入。
我已经设置了重写标记:
function animal_custom_rewrite_tag() {
add_rewrite_tag('%animal-name%', '([^&]+)');
}
add_action('init', 'animal_custom_rewrite_tag', 10, 0);
重写规则:
function add_some_rewrite_rules() {
global $wp_rewrite;
add_rewrite_rule('^planets/animals-and-more/animal/[a-zA-Z0-9]*$','index.php?pagename=animal&animal-name=$matches[4]','top');
$wp_rewrite->flush_rules();
}
add_action( 'init' , 'add_custom_ncta_rewrite_rules' );
如果我在类似' animal-name = monkey'中对字符串进行硬编码,则重写规则有效,但似乎匹配[n] 数组不会工作。
我知道通过修改htaccess可以实现这一切,但我需要一个Wordpress解决方案。
任何想法为什么$匹配[]根本不起作用?
答案 0 :(得分:2)
This article from theme.fm提到 matches [n] 数组仅适用于括号括起来的正则表达式中的组。例如:
要获得$ matches 1在返回'planetts / animals-more-animal / human'时返回'human',重写规则需要如下所示:
add_rewrite_rule('^planets/animals-and-more/animal/([a-zA-Z0-9-_]+)$','index.php?pagename=sponsorship&sponsorship_item=$matches[1]','top');
在您想要“匹配”的群组周围加上()。