Make WordPress Core


Ignore:
Timestamp:
10/14/2016 08:05:40 PM (8 years ago)
Author:
boonebgorges
Message:

Query: Allow the hyphen-prefix-for-search-exclusion feature to be disabled by filter.

WordPress 4.4 introduced "hyphen exclusion" for search terms, so that
"foo -bar" would return posts containing "foo" AND not containing "bar".
The new filter 'wp_query_use_hyphen_for_exclusion' allows developers
to disable this feature when it's known that their content will contain
semantically important leading hyphens.

Props chriseverson, choongsavvii.
Fixes #38099.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/query/search.php

    r38733 r38792  
    5858    function filter_wp_search_stopwords() {
    5959        return array();
     60    }
     61
     62    /**
     63     * @ticket 38099
     64     */
     65    function test_filter_wp_query_use_hyphen_for_exclusion() {
     66        $title = '-HYPHENATION_TEST';
     67
     68        // Create a post with a title which starts with a hyphen
     69        $post_id = self::factory()->post->create( array(
     70            'post_content' => $title, 'post_type' => $this->post_type
     71        ) );
     72
     73        // By default, we can use the hyphen prefix to exclude results
     74        $this->assertEquals( array(), $this->get_search_results( $title ) );
     75
     76        // After we disable the feature using the filter, we should get the result
     77        add_filter( 'wp_query_use_hyphen_for_exclusion', '__return_false' );
     78        $result = $this->get_search_results( $title );
     79        $post = array_pop( $result );
     80        $this->assertEquals( $post->ID, $post_id );
     81        remove_filter( 'wp_query_use_hyphen_for_exclusion', '__return_false' );
    6082    }
    6183
Note: See TracChangeset for help on using the changeset viewer.