今天刚刚发布了一个名为Cortex, 免费提供于GitHub. 你需要PHP 5.4+ 和Composer 要安装它(docs).
此插件允许为查询编写自定义“路由”,它基于Symfony routing component 所以添加路由的机制类似于此。
Here 您将找到Cortex的完整文档。
使用Cortex只需一个简单的方法:
add_action( \'brain_loaded\', function() {
Brain\\Routes::add( \'/ads/{cat}/{area}\', \'cat_area_ad\' )
->requirements( [ \'cat\' => \'[a-z]+\', \'area\' => \'area-[0-9]+\' ] )
->query( function( $matches ) {
return [
\'post_type\' => \'ad\',
\'tax_query\' => [
\'relation\' => \'AND\',
[
\'taxonomy\' => \'category\',
\'terms\' => [ $matches[\'cat\'] ],
\'field\' => \'slug\'
],
[
\'taxonomy\' => \'area\',
\'terms\' => [ $matches[\'area\'] ],
\'field\' => \'slug\'
]
]
];
} );
} );
"cat_area_ad"
是我分配给路由的ID,它允许轻松构建路由的url(请参阅
Cortex docs):
function get_cat_area_url( $cat = \'\', $area = \'\' ) {
if ( did_action( \'parse_request\' ) && ! empty( $cat ) && ! empty( $area ) ) {
if ( strpos( $area, \'area-\' ) !== 0 ) {
$area = \'area-\' . $area;
}
return Brain\\Routes::url( \'cat_area_ad\', [ \'cat\' => $cat, \'area\' => $area ] );
} else {
return home_url();
}
}
前一个函数允许获取路由的url,但必须将area和category作为函数参数传递。
一旦阅读OP,似乎“区域”术语在表格中被命名"area-XX"
(其中“XX”是一个数字)我让路线要求该格式,并且我还get_cat_area_url
函数会自动在作为参数传递的区域字符串(如果尚未存在)前加上“area-”,因此您可以这样使用它:
$url = get_cat_area_url( \'bikes\', \'5\' );
echo $url; // will be: example.com/ads/bikes/area-5
get_cat_area_url
只有在以下情况下,功能才能正常工作
\'parse_request\'
挂钩已触发(由于限制
Cortex url() API method), 但在任何模板文件中,都可以毫无问题地使用它,因为当显示模板时,钩子总是被触发的。