solution
Here's an example implementation of this solution:
public function test_get_pages_with_taxonomy_on_page() {
wp_set_current_user( 1 );
register_taxonomy( 'language', 'page' );
$term_en = self::factory()->term->create( array( 'taxonomy' => 'language', 'name' => 'english' ) );
$term_fr = self::factory()->term->create( array( 'taxonomy' => 'language', 'name' => 'french' ) );
$page_en = self::factory()->post->create( array( 'post_type' => 'page', 'tax_input' => array( 'language' => array( $term_en ) ) ) );
$page_fr = self::factory()->post->create( array( 'post_type' => 'page', 'tax_input' => array( 'language' => array( $term_fr ) ) ) );
add_filter(
'get_pages_query_args',
function ( $query_args, $r ) {
$query_args['tax_query'][] = array(
'taxonomy' => 'language',
'field' => 'slug',
'terms' => $r['language'],
'operator' => 'IN',
);
return $query_args;
},
10,
2
);
add_action(
'parse_query',
function ( $query ) {
if ( ! isset( $query->query_vars['language'] ) ) {
$query->set( 'language', 'english' );
}
}
);
$pages = get_pages( array( 'language' => 'french' ) );
$this->assertCount( 1, $pages );
$this->assertSame( $page_fr, $pages[0]->ID );
}
Comments
Post a Comment