Snippets

WP_Query by “Standard” Post Format

When using WordPress post formats, you’ll quickly start looking for a way to query WordPress content by the “standard” post format. This Trac ticket seeks to work on solving this. The implementation there handles URL-based requests:

http://example.com/type/standard/

quite nicely. However the code in that patch doesn’t (yet) handle direct WP_Query calls.

function akv3_query_format_standard($query) {
	if (isset($query->query_vars['post_format']) &&
		$query->query_vars['post_format'] == 'post-format-standard') {
		if (($post_formats = get_theme_support('post-formats')) &&
			is_array($post_formats[0]) && count($post_formats[0])) {
			$terms = array();
			foreach ($post_formats[0] as $format) {
				$terms[] = 'post-format-'.$format;
			}
			$query->is_tax = null;
			unset($query->query_vars['post_format']);
			unset($query->query_vars['taxonomy']);
			unset($query->query_vars['term']);
			unset($query->query['post_format']);
			$query->set('tax_query', array(
				'relation' => 'AND',
				array(
					'taxonomy' => 'post_format',
					'terms' => $terms,
					'field' => 'slug',
					'operator' => 'NOT IN'
				)
			));
		}
	}
}
add_action('pre_get_posts', 'akv3_query_format_standard');

Source: http://alexking.org/blog/2012/01/05/wp_query-by-standard-pos...

Share this snippet

 
  • http://joanpique.com Joan

    Nice piece of code, thanks!