Динамические параметры $_GET

Этот пример показывает, как использовать параметры $_GET (из URL) для изменения запроса архива типа post. В данном примере предполагается, что существует тип поста 'event' и что его архив существует по адресу URL; www.website.com/events.

Тип поста event содержит поле select под названием 'city' со значениями 'melbourne' и 'sydney'. Если добавить параметр к url, запрос будет изменен, и будут показаны только те посты, которые соответствуют 'city': www.website.com/events?city=melbourne.

// FUNCTIONS.PHP

function my_pre_get_posts( $query ) {
	
	// do not modify queries in the admin
	if( is_admin() ) {
		
		return $query;
		
	}
	
	
	// only modify queries for 'event' post type
	if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'event' ) {
		
		// allow the url to alter the query
		if( isset($_GET['city']) ) {
			
    		$query->set('meta_key', 'city');
			$query->set('meta_value', $_GET['city']);
			
    	} 
		
	}
	
	
	// return
	return $query;

}

add_action('pre_get_posts', 'my_pre_get_posts');

Была ли эта страница полезной?