我做了一些类似的事情,但我只是通过一个元键进行过滤。
add_action(\'init\', \'add_custom_meta_url\');
function add_custom_meta_url() {
global $wp,$wp_rewrite;
$wp->add_query_var(\'food\');
$wp_rewrite->add_rule(\'food/([^/]+)\',\'index.php?food=$matches[1]\',\'top\');
$wp_rewrite->flush_rules(false); // This should really be done in a plugin activation
}
然后通过查询变量将其应用于索引查询(您必须以分类法值为目标,而不是自定义元,并将比较调整为=):
add_action(\'parse_query\', \'apply_custom_meta_to_query\');
function apply_custom_meta_to_query(&$query) {
if (isset($query->query[\'food\'])) {
$query->query_vars[\'meta_key\'] = \'food\';
$query->query_vars[\'meta_value\'] = $query->query[\'food\'];
$query->query_vars[\'meta_compare\'] = \'LIKE\';
}
}
有更有效的方法可以做到这一点,但请继续关注
wp_rewrite
, 因为这是WordPress处理漂亮URL的方式,而不是试图侵入事物流。
祝你好运