抽象
我的任务是弄清楚如何使用Wordpress Rewrite API创建一个可以过滤products
自定义帖子类型帖子的网址结构。当通过URL结构传递分类法条款时,Wordpress会原生过滤products
个帖子并将结果返回到archive-products.php
模板。
taxonomies
及其terms
products
解决方案
系列
行业
技术
所需网址的示例
products/solutions/broadband,enterprise/series/express/industries/business,education
products/industries/tech/internet/solutions/broadband,express
products/solutions/broadband
以上只是一个结构的想法,其他任何人都非常欢迎。
问题
由于我缺乏正则表达式技能,我不确定什么是可能的。任何正确方向的点都将非常感激。
答案 0 :(得分:0)
浏览以下代码。它可以帮到你。
function generate_taxonomy_rewrite_rules( $wp_rewrite ) {
$rules = array();
$post_types = get_post_types( array( 'name' => 'products', 'public' => true, '_builtin' => false ), 'objects' );
$taxonomies = get_taxonomies( array( 'name' => 'Solutions', 'public' => true, '_builtin' => false ), 'objects' );
foreach ( $post_types as $post_type ) {
$post_type_name = $post_type->name; // 'product'
$post_type_slug = $post_type->rewrite['slug']; // 'products'
foreach ( $taxonomies as $taxonomy ) {
if ( $taxonomy->object_type[0] == $post_type_name ) {
$terms = get_categories( array( 'type' => $post_type_name, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0 ) );
foreach ( $terms as $term ) {
$rules[$post_type_slug . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug;
}
}
}
}
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'generate_taxonomy_rewrite_rules');