Snippets → WordPress
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...
Nice piece of code, thanks!