| | 1925 | |
| | 1926 | /** |
| | 1927 | * @ticket 43446 |
| | 1928 | */ |
| | 1929 | public function test_compare_key_not_equals() { |
| | 1930 | $posts = self::factory()->post->create_many( 3 ); |
| | 1931 | |
| | 1932 | add_post_meta( $posts[0], 'aaa_foo_aaa', 'abc' ); |
| | 1933 | add_post_meta( $posts[1], 'aaa_bar_aaa', 'abc' ); |
| | 1934 | add_post_meta( $posts[2], 'aaa_foo_bbb', 'abc' ); |
| | 1935 | add_post_meta( $posts[2], 'aaa_foo_ccc', 'abc' ); |
| | 1936 | |
| | 1937 | $q = new WP_Query( |
| | 1938 | array( |
| | 1939 | 'meta_query' => array( |
| | 1940 | array( |
| | 1941 | 'compare_key' => '!=', |
| | 1942 | 'key' => 'aaa_foo_bbb', |
| | 1943 | 'value' => 'abc', |
| | 1944 | ), |
| | 1945 | ), |
| | 1946 | 'fields' => 'ids', |
| | 1947 | ) |
| | 1948 | ); |
| | 1949 | |
| | 1950 | $this->assertEqualSets( array( $posts[0], $posts[1] ), $q->posts ); |
| | 1951 | } |
| | 1952 | |
| | 1953 | /** |
| | 1954 | * @ticket 43446 |
| | 1955 | */ |
| | 1956 | public function test_compare_key_not_like() { |
| | 1957 | $posts = self::factory()->post->create_many( 3 ); |
| | 1958 | |
| | 1959 | add_post_meta( $posts[0], 'aaa_foo_aaa', 'abc' ); |
| | 1960 | add_post_meta( $posts[1], 'aaa_bar_aaa', 'abc' ); |
| | 1961 | add_post_meta( $posts[1], 'aaa_bar_ccc', 'abc' ); |
| | 1962 | add_post_meta( $posts[2], 'aaa_foo_bbb', 'abc' ); |
| | 1963 | |
| | 1964 | $q = new WP_Query( |
| | 1965 | array( |
| | 1966 | 'meta_query' => array( |
| | 1967 | array( |
| | 1968 | 'compare_key' => 'NOT LIKE', |
| | 1969 | 'key' => 'aaa_bar', |
| | 1970 | 'value' => 'abc', |
| | 1971 | ), |
| | 1972 | ), |
| | 1973 | 'fields' => 'ids', |
| | 1974 | ) |
| | 1975 | ); |
| | 1976 | |
| | 1977 | $this->assertEqualSets( array( $posts[0], $posts[2] ), $q->posts ); |
| | 1978 | } |
| | 1979 | |
| | 1980 | /** |
| | 1981 | * @ticket 43446 |
| | 1982 | */ |
| | 1983 | public function test_compare_key_in() { |
| | 1984 | $posts = self::factory()->post->create_many( 3 ); |
| | 1985 | |
| | 1986 | add_post_meta( $posts[0], 'aaa_foo_aaa', 'abc' ); |
| | 1987 | add_post_meta( $posts[1], 'aaa_bar_aaa', 'abc' ); |
| | 1988 | add_post_meta( $posts[2], 'aaa_foo_bbb', 'abc' ); |
| | 1989 | |
| | 1990 | $q = new WP_Query( |
| | 1991 | array( |
| | 1992 | 'meta_query' => array( |
| | 1993 | array( |
| | 1994 | 'compare_key' => 'IN', |
| | 1995 | 'key' => array( 'aaa_foo_bbb', 'aaa_bar_aaa' ), |
| | 1996 | ), |
| | 1997 | ), |
| | 1998 | 'fields' => 'ids', |
| | 1999 | ) |
| | 2000 | ); |
| | 2001 | |
| | 2002 | $this->assertEqualSets( array( $posts[1], $posts[2] ), $q->posts ); |
| | 2003 | } |
| | 2004 | |
| | 2005 | /** |
| | 2006 | * @ticket 43446 |
| | 2007 | */ |
| | 2008 | public function test_compare_key_not_in() { |
| | 2009 | $posts = self::factory()->post->create_many( 3 ); |
| | 2010 | |
| | 2011 | add_post_meta( $posts[0], 'aaa_foo_aaa', 'abc' ); |
| | 2012 | add_post_meta( $posts[0], 'aaa_foo_ddd', 'abc' ); |
| | 2013 | add_post_meta( $posts[1], 'aaa_bar_aaa', 'abc' ); |
| | 2014 | add_post_meta( $posts[2], 'aaa_foo_bbb', 'abc' ); |
| | 2015 | add_post_meta( $posts[2], 'aaa_foo_ccc', 'abc' ); |
| | 2016 | |
| | 2017 | $q = new WP_Query( |
| | 2018 | array( |
| | 2019 | 'meta_query' => array( |
| | 2020 | array( |
| | 2021 | 'compare_key' => 'NOT IN', |
| | 2022 | 'key' => array( 'aaa_foo_bbb', 'aaa_foo_ddd' ), |
| | 2023 | ), |
| | 2024 | ), |
| | 2025 | 'fields' => 'ids', |
| | 2026 | ) |
| | 2027 | ); |
| | 2028 | |
| | 2029 | $this->assertEqualSets( array( $posts[1] ), $q->posts ); |
| | 2030 | } |