Changeset 53037
- Timestamp:
- 03/31/2022 10:04:25 AM (3 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-tax-query.php
r52455 r53037 638 638 } 639 639 640 if ( ! is_taxonomy_hierarchical( $query['taxonomy'] ) ) { 641 $args['number'] = count( $terms ); 642 } 643 640 644 $term_query = new WP_Term_Query(); 641 645 $term_list = $term_query->query( $args ); -
trunk/tests/phpunit/tests/query/taxQuery.php
r52577 r53037 1622 1622 $this->assertSameSets( array( $p ), $q->posts ); 1623 1623 } 1624 1625 /** 1626 * @ticket 55360 1627 * 1628 * @covers WP_Tax_Query::transform_query 1629 */ 1630 public function test_tax_terms_should_limit_query() { 1631 $filter = new MockAction(); 1632 add_filter( 'terms_pre_query', array( $filter, 'filter' ), 10, 2 ); 1633 register_taxonomy( 'wptests_tax', 'post' ); 1634 $name = 'foobar'; 1635 $t = self::factory()->term->create( 1636 array( 1637 'taxonomy' => 'wptests_tax', 1638 'name' => $name, 1639 ) 1640 ); 1641 1642 $p = self::factory()->post->create(); 1643 wp_set_object_terms( $p, array( $t ), 'wptests_tax' ); 1644 1645 $q = new WP_Query( 1646 array( 1647 'fields' => 'ids', 1648 'tax_query' => array( 1649 array( 1650 'taxonomy' => 'wptests_tax', 1651 'field' => 'name', 1652 'terms' => $name, 1653 ), 1654 ), 1655 ) 1656 ); 1657 1658 $filter_args = $filter->get_args(); 1659 $query = $filter_args[1][1]->request; 1660 1661 $this->assertSameSets( array( $p ), $q->posts ); 1662 $this->assertStringContainsString( 'LIMIT 1', $query ); 1663 } 1664 1665 /** 1666 * @ticket 55360 1667 * 1668 * @covers WP_Tax_Query::transform_query 1669 */ 1670 public function test_tax_terms_should_limit_query_to_one() { 1671 $filter = new MockAction(); 1672 add_filter( 'terms_pre_query', array( $filter, 'filter' ), 10, 2 ); 1673 register_taxonomy( 'wptests_tax', 'post' ); 1674 $name = 'foobar'; 1675 $t = self::factory()->term->create( 1676 array( 1677 'taxonomy' => 'wptests_tax', 1678 'name' => $name, 1679 ) 1680 ); 1681 1682 $p = self::factory()->post->create(); 1683 wp_set_object_terms( $p, array( $t ), 'wptests_tax' ); 1684 1685 $q = new WP_Query( 1686 array( 1687 'fields' => 'ids', 1688 'tax_query' => array( 1689 array( 1690 'taxonomy' => 'wptests_tax', 1691 'field' => 'term_id', 1692 'terms' => array( $t, $t, $t ), 1693 ), 1694 ), 1695 ) 1696 ); 1697 1698 $filter_args = $filter->get_args(); 1699 $query = $filter_args[1][1]->request; 1700 1701 $this->assertSameSets( array( $p ), $q->posts ); 1702 $this->assertStringContainsString( 'LIMIT 1', $query ); 1703 } 1704 1705 /** 1706 * @ticket 55360 1707 * 1708 * @covers WP_Tax_Query::transform_query 1709 */ 1710 public function test_hierarchical_taxonomies_do_not_limit_query() { 1711 $filter = new MockAction(); 1712 add_filter( 'terms_pre_query', array( $filter, 'filter' ), 10, 2 ); 1713 register_taxonomy( 'wptests_tax', 'post', array( 'hierarchical' => true ) ); 1714 $name = 'foobar'; 1715 $t = self::factory()->term->create( 1716 array( 1717 'taxonomy' => 'wptests_tax', 1718 'name' => $name, 1719 ) 1720 ); 1721 1722 $p = self::factory()->post->create(); 1723 wp_set_object_terms( $p, array( $t ), 'wptests_tax' ); 1724 1725 $q = new WP_Query( 1726 array( 1727 'fields' => 'ids', 1728 'tax_query' => array( 1729 array( 1730 'taxonomy' => 'wptests_tax', 1731 'field' => 'name', 1732 'terms' => $name, 1733 ), 1734 ), 1735 ) 1736 ); 1737 1738 $filter_args = $filter->get_args(); 1739 $query = $filter_args[0][1]->request; 1740 1741 $this->assertSameSets( array( $p ), $q->posts ); 1742 $this->assertStringNotContainsString( 'LIMIT 1', $query ); 1743 } 1624 1744 }
Note: See TracChangeset
for help on using the changeset viewer.