Query: Respect 'suppress_filters' when filtering search-related SQL.
Props 5um17. Fixes #35594. git-svn-id: https://develop.svn.wordpress.org/trunk@36404 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
14b6dbebd2
commit
746f545f9a
@ -2790,15 +2790,17 @@ class WP_Query {
|
|||||||
$search = $this->parse_search( $q );
|
$search = $this->parse_search( $q );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
if ( ! $q['suppress_filters'] ) {
|
||||||
* Filter the search SQL that is used in the WHERE clause of WP_Query.
|
/**
|
||||||
*
|
* Filter the search SQL that is used in the WHERE clause of WP_Query.
|
||||||
* @since 3.0.0
|
*
|
||||||
*
|
* @since 3.0.0
|
||||||
* @param string $search Search SQL for WHERE clause.
|
*
|
||||||
* @param WP_Query $this The current WP_Query object.
|
* @param string $search Search SQL for WHERE clause.
|
||||||
*/
|
* @param WP_Query $this The current WP_Query object.
|
||||||
$search = apply_filters_ref_array( 'posts_search', array( $search, &$this ) );
|
*/
|
||||||
|
$search = apply_filters_ref_array( 'posts_search', array( $search, &$this ) );
|
||||||
|
}
|
||||||
|
|
||||||
// Taxonomies
|
// Taxonomies
|
||||||
if ( !$this->is_singular ) {
|
if ( !$this->is_singular ) {
|
||||||
@ -3007,15 +3009,18 @@ class WP_Query {
|
|||||||
if ( ! empty( $q['search_orderby_title'] ) && ( empty( $q['orderby'] ) && ! $this->is_feed ) || ( isset( $q['orderby'] ) && 'relevance' === $q['orderby'] ) )
|
if ( ! empty( $q['search_orderby_title'] ) && ( empty( $q['orderby'] ) && ! $this->is_feed ) || ( isset( $q['orderby'] ) && 'relevance' === $q['orderby'] ) )
|
||||||
$search_orderby = $this->parse_search_order( $q );
|
$search_orderby = $this->parse_search_order( $q );
|
||||||
|
|
||||||
/**
|
if ( ! $q['suppress_filters'] ) {
|
||||||
* Filter the ORDER BY used when ordering search results.
|
/**
|
||||||
*
|
* Filter the ORDER BY used when ordering search results.
|
||||||
* @since 3.7.0
|
*
|
||||||
*
|
* @since 3.7.0
|
||||||
* @param string $search_orderby The ORDER BY clause.
|
*
|
||||||
* @param WP_Query $this The current WP_Query instance.
|
* @param string $search_orderby The ORDER BY clause.
|
||||||
*/
|
* @param WP_Query $this The current WP_Query instance.
|
||||||
$search_orderby = apply_filters( 'posts_search_orderby', $search_orderby, $this );
|
*/
|
||||||
|
$search_orderby = apply_filters( 'posts_search_orderby', $search_orderby, $this );
|
||||||
|
}
|
||||||
|
|
||||||
if ( $search_orderby )
|
if ( $search_orderby )
|
||||||
$orderby = $orderby ? $search_orderby . ', ' . $orderby : $search_orderby;
|
$orderby = $orderby ? $search_orderby . ', ' . $orderby : $search_orderby;
|
||||||
}
|
}
|
||||||
|
@ -159,4 +159,24 @@ class Tests_Query_Search extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertEqualSets( array( $p2 ), $q->posts );
|
$this->assertEqualSets( array( $p2 ), $q->posts );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 35594
|
||||||
|
*/
|
||||||
|
public function test_search_should_respect_suppress_filters() {
|
||||||
|
add_filter( 'posts_search', array( $this, 'filter_posts_search' ) );
|
||||||
|
add_filter( 'posts_search_orderby', array( $this, 'filter_posts_search' ) );
|
||||||
|
$q = new WP_Query( array(
|
||||||
|
's' => 'foo',
|
||||||
|
'suppress_filters' => true,
|
||||||
|
) );
|
||||||
|
remove_filter( 'posts_search', array( $this, 'filter_posts_search' ) );
|
||||||
|
remove_filter( 'posts_search_orderby', array( $this, 'filter_posts_search' ) );
|
||||||
|
|
||||||
|
$this->assertNotContains( 'posts_search', $q->request );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function filter_posts_search( $sql ) {
|
||||||
|
return $sql . ' /* posts_search */';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user