88namespace Osi \Features \Inc ;
99
1010use Osi \Features \Inc \Traits \Singleton ;
11+ use Osi \Features \Inc \Post_Types \Post_Type_Board_Member ;
12+ use Osi \Features \Inc \Taxonomies \Taxonomy_Status ;
13+ use Osi \Features \Inc \Post_Types \Post_Type_License ;
14+ use Osi \Features \Inc \Taxonomies \Taxonomy_License_Category ;
15+ use Osi \Features \Inc \Post_Types \Post_Type_Press_Mentions ;
16+ use Osi \Features \Inc \Taxonomies \Taxonomy_Publication ;
17+ use Osi \Features \Inc \Taxonomies \Taxonomy_Seat_Type ;
18+ use Osi \Features \Inc \Taxonomies \Taxonomy_Steward ;
1119
1220/**
1321 * Class Rewrite
@@ -20,9 +28,7 @@ class Rewrite {
2028 * Construct method.
2129 */
2230 protected function __construct () {
23-
2431 $ this ->setup_hooks ();
25-
2632 }
2733
2834 /**
@@ -32,12 +38,60 @@ protected function __construct() {
3238 */
3339 protected function setup_hooks () {
3440 add_filter ( 'query_vars ' , array ( $ this , 'add_query_vars ' ), 10 );
41+ add_action ( 'init ' , array ( $ this , 'add_custom_rewrite_rules ' ), 20 );
3542 }
3643
37- public function add_query_vars ( $ vars ) {
44+ /**
45+ * Add custom query vars.
46+ *
47+ * @param array $vars Public query vars.
48+ *
49+ * @return array
50+ */
51+ public function add_query_vars ( array $ vars ) {
3852 $ vars [] = 'categories ' ;
39-
4053 return $ vars ;
4154 }
4255
56+ /**
57+ * Add custom rewrite rules for custom post types and taxonomies.
58+ *
59+ * @return void
60+ */
61+ public function add_custom_rewrite_rules () {
62+ $ base = Post_Type_License::get_instance ()->get_slug ();
63+ add_rewrite_rule (
64+ '^ ' . $ base . '/steward/([^/]+)/?$ ' ,
65+ 'index.php?taxonomy= ' . Taxonomy_Steward::SLUG . '&term=$matches[1] ' ,
66+ 'top '
67+ );
68+
69+ $ base = Post_Type_Board_Member::get_instance ()->get_slug ();
70+ add_rewrite_rule (
71+ '^ ' . $ base . '/status/([^/]+)/?$ ' ,
72+ 'index.php?taxonomy= ' . Taxonomy_Status::SLUG . '&term=$matches[1] ' ,
73+ 'top '
74+ );
75+
76+ $ base = Post_Type_Board_Member::get_instance ()->get_slug ();
77+ add_rewrite_rule (
78+ '^ ' . $ base . '/seat-type/([^/]+)/?$ ' ,
79+ 'index.php?taxonomy= ' . Taxonomy_Seat_Type::SLUG . '&term=$matches[1] ' ,
80+ 'top '
81+ );
82+
83+ $ base = Post_Type_License::get_instance ()->get_slug ();
84+ add_rewrite_rule (
85+ '^ ' . $ base . '/category/([^/]+)/?$ ' ,
86+ 'index.php?taxonomy= ' . Taxonomy_License_Category::SLUG . '&term=$matches[1] ' ,
87+ 'top '
88+ );
89+
90+ $ base = Post_Type_Press_Mentions::get_instance ()->get_slug ();
91+ add_rewrite_rule (
92+ '^ ' . $ base . '/publication/([^/]+)/?$ ' ,
93+ 'index.php?taxonomy= ' . Taxonomy_Publication::SLUG . '&term=$matches[1] ' ,
94+ 'top '
95+ );
96+ }
4397}
0 commit comments