繁体   English   中英

在Wordpress中使用自定义分类法和自定义帖子类型的术语设置类似于商店的url结构

[英]Setting up a store-like url structure in Wordpress with custom taxonomies and terms for a custom post type

抽象

我的任务是弄清楚如何使用Wordpress Rewrite API创建可过滤products自定义帖子类型的帖子的URL结构。 当通过URL结构传递分类法术语时,Wordpress会本地过滤products并将结果返回给archive-products.php模板。

taxonomies及其products terms的示例数据集

  • 解决方案

    • 宽频
    • 企业
  • 系列

    • 表达
    • 光学局域网
  • 产业领域

    • 商业
    • 教育
    • 高等教育
    • 卫生保健
  • 科技类

    • 进阶运作
    • 互联网
    • 旧版服务

所需网址的示例

  1. products/solutions/broadband,enterprise/series/express/industries/business,education
  2. products/industries/tech/internet/solutions/broadband,express
  3. products/solutions/broadband

上面只是一个结构的构想,其他任何事物都不受欢迎。

问题

由于我缺乏正则表达式技能,因此不确定是否可行。 朝正确方向的任何观点将不胜感激。

通过下面的代码。 可能会对您有帮助。

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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM