apply_filters_ref_array( 'posts_where', string $where , WP_Query $query )
Filters the WHERE clause of the query.
Contents
Parameters
More Information
- This filter applies to the posts where clause and allows you to restrict which posts will show up in various areas of the site. Combined with
restrict_manage_posts
it allows you to only show posts matching specific conditions.Here is an example to match the
restrict_manage_posts
example:add_filter( 'posts_where' , 'posts_where' ); function posts_where( $where ) { if( is_admin() ) { global $wpdb; if ( isset( $_GET['author_restrict_posts'] ) && !empty( $_GET['author_restrict_posts'] ) && intval( $_GET['author_restrict_posts'] ) != 0 ) { $author = intval( $_GET['author_restrict_posts'] ); $where .= " AND ID IN (SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id=$author )"; } } return $where; }
Depending on setup, if we had a custom post type of type ‘book’ with a taxonomy (category style) of type ‘author’, this filter would allow us to only show books written by a specific author.
- Certain functions which retrieve posts do not run filters, so the posts_where filter functions you attach will not modify the query. To overcome this, set suppress_filters to false in the argument array passed to the function. The following code sample illustrates this.
//some function that modifies the query function useless_condition ( $where ) { return $where . ' AND 1=1 '; } //attach your function to the posts_where filter add_filter( 'posts_where' , 'useless_condition' ); //get posts AND make sure filters are NOT suppressed $posts = get_posts( array( 'suppress_filters' => FALSE ) );
Source
File: wp-includes/class-wp-query.php
.
View all references
$where = apply_filters_ref_array( 'posts_where', array( $where, &$this ) );
Changelog
Version | Description |
---|---|
1.5.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
Please note that the post_type query variable is not set for standard types (page, post and attachment, see WP_QUery class file line 2396 on trac), only for custom post types, so this is how you can test for each type,
Top ↑
Feedback
Actually the above is incomplete, post_types are not being set for taxonomy archive queries. This is a bug which has been filed on core trac, — By Aurovrata Venet —