| 740 | |
| 741 | /** |
| 742 | * @ticket 47591 |
| 743 | */ |
| 744 | public function test_terms_pre_query_filter_should_bypass_database_query() { |
| 745 | global $wpdb; |
| 746 | |
| 747 | add_filter( 'terms_pre_query', array( __CLASS__, 'filter_terms_pre_query' ), 10, 3 ); |
| 748 | |
| 749 | $num_queries = $wpdb->num_queries; |
| 750 | $q = new WP_Term_Query( |
| 751 | array( |
| 752 | 'fields' => 'ID', |
| 753 | ) |
| 754 | ); |
| 755 | |
| 756 | remove_filter( 'terms_pre_query', array( __CLASS__, 'filter_terms_pre_query' ), 10, 3 ); |
| 757 | |
| 758 | // Make sure no queries were executed. |
| 759 | $this->assertSame( $num_queries, $wpdb->num_queries ); |
| 760 | |
| 761 | // We manually inserted a non-existing term and overrode the results with it. |
| 762 | $this->assertSame( array( 555 ), $q->results ); |
| 763 | } |
| 764 | |
| 765 | public static function filter_terms_pre_query( $terms, $query, $args ) { |
| 766 | return array( 555 ); |
| 767 | } |