settings = Settings::get_instance(); add_filter( 'get_terms_args', [ $this, 'filter_terms_order' ], 10, 2 ); add_action( 'pre_get_posts', [ $this, 'filter_docs_order' ] ); } /** * Filters taxonomy term queries (Groups and Categories). */ public function filter_terms_order( $args, $taxonomies ) { $post_type = PostType::get_instance(); $is_kb = in_array( $post_type->knowledge_base, (array) $taxonomies, true ); $is_cat = in_array( $post_type->category, (array) $taxonomies, true ); if ( $is_kb ) { $args['orderby'] = $this->settings->get( 'kb_orderby', 'name' ); $args['order'] = $this->settings->get( 'kb_order', 'ASC' ); } elseif ( $is_cat ) { $args['orderby'] = $this->settings->get( 'category_orderby', 'name' ); $args['order'] = $this->settings->get( 'category_order', 'ASC' ); } return $args; } /** * Filters Docs (acmn_docs) queries. */ public function filter_docs_order( $query ) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( $query->get( 'post_type' ) === PostType::get_instance()->post_type || is_post_type_archive( PostType::get_instance()->post_type ) ) { $query->set( 'orderby', $this->settings->get( 'docs_orderby', 'date' ) ); $query->set( 'order', $this->settings->get( 'docs_order', 'DESC' ) ); } } }