要使其工作,您必须添加一个重写https://example.com/[manufacturer slug]/[brand slug]
索引。php,例如。manufacturer=[manufacturer slug]&brand=[brand slug]
.e、 g.:
add_filter( \'rewrite_rules_array\',\'jf_insert_rewrite_rules\' );
function jf_insert_rewrite_rules( $rules ) {
$newrules[\'^(.*)/(.*)/?$\'] = \'index.php?manufacturer=$matches[1]&brand=$matches[2]\';
return $newrules + $rules;
}
记住转到permalinks页面并点击save以更新重写规则。
Mind you! 这样,就不可能再在一个页面(例如/关于/联系)下有一个1级子页面,因为这将被替换为/[制造商slug]/[品牌slug]重写。最好在其前面加一个标记,例如/production/manufacturer-1/brand-1,再加上这样的重写规则:^production/(.*)/(.*)/?$
除此之外,您还需要注册查询变量,例如:
add_filter(\'query_vars\', \'jf_add_query_vars\');
function jf_add_query_vars( $vars ) {
$vars[] = \'manufacturer\';
$vars[] = \'brand\';
return $vars;
}
您可能希望此页面具有自己的模板,以便可以从外部api中提取。可以通过检查
manufacturer
和
brand
参数:
add_action(\'template_redirect\', \'jf_manufacturer_brand_templates\');
function jf_manufacturer_brand_templates() {
if (get_query_var(\'manufacturer\') && get_query_var(\'brand\')) {
if (file_exists(get_template_directory() . \'/manu_brand.php\')) {
add_filter( \'template_include\', function() {
return get_template_directory() . \'/manu_brand.php\';
});
}
}
}
您也可以在这里有多个案例,因为如果只有制造商可用,则可以显示每个制造商的品牌。甚至只是品牌,以展示品牌细节。
在该模板中,可以获取如下参数:
var_dump(
get_query_var(\'manufacturer\'),
get_query_var(\'brand\')
);
// hit API with these params and show the result
UPDATE
您的重写规则有错误
^production(.*)/
不会正确匹配,因为我的目的是使用
production/...
.
最简单的方法是再添加两条重写规则。它可以在一个重写规则中完成,但要了解这些规则,最好是编写三个规则,请参见下面的代码。
我还更新了处理模板选择的函数,以便您可以查看如何选择正确的模板。这也可以在一个模板中完成,但最好有单独的模板和规则。
如果这对您有帮助,请告诉我(记住转到permalinks页面并点击save以更新重写规则;-)。
add_filter(\'query_vars\', \'jf_add_query_vars\');
function jf_add_query_vars( $vars ) {
$vars[] = \'manufacturer\';
$vars[] = \'brand\';
$vars[] = \'model\';
return $vars;
}
add_action(\'template_redirect\', \'jf_manufacturer_brand_templates\');
function jf_manufacturer_brand_templates() {
$manufacturer = get_query_var(\'manufacturer\');
$brand = get_query_var(\'brand\');
$model = get_query_var(\'model\');
if ( ! empty($manufacturer) && ! empty($brand) && ! empty($model) ) {
if (file_exists(get_template_directory() . \'/model-detail.php\')) {
add_filter( \'template_include\', function() { return get_template_directory() . \'/model-detail.php\'; });
}
} else if ( ! empty($manufacturer) && ! empty($brand) ) {
if (file_exists(get_template_directory() . \'/brand-detail.php\')) {
add_filter( \'template_include\', function() { return get_template_directory() . \'/brand-detail.php\'; });
}
} else if ( ! empty($manufacturer) ) {
if (file_exists(get_template_directory() . \'/manufacturer-detail.php\')) {
add_filter( \'template_include\', function() { return get_template_directory() . \'/manufacturer-detail.php\'; });
}
}
}
function jf_insert_rewrite_rules( $rules ) {
$newrules[\'^production/(.*)/(.*)/(.*)/?$\'] = \'index.php?manufacturer=$matches[1]&brand=$matches[2]&model=$matches[3]\';
$newrules[\'^production/(.*)/(.*)/?$\'] = \'index.php?manufacturer=$matches[1]&brand=$matches[2]\';
$newrules[\'^production/(.*)/?$\'] = \'index.php?manufacturer=$matches[1]\';
return $newrules + $rules;
}
add_filter( \'rewrite_rules_array\',\'jf_insert_rewrite_rules\' );
您可以在此处看到工作示例的输出:
https://jos.studioparkers.nl/wpplay/production/manufacturer-1/brand-1/model-1https://jos.studioparkers.nl/wpplay/production/manufacturer-1/brand-1https://jos.studioparkers.nl/wpplay/production/manufacturer-1