mirror of
git://develop.git.wordpress.org/
synced 2025-01-18 05:18:42 +01:00
Editor: In _WP_Editors::wp_link_query
, allow filtering empty results.
Previously, it was not possible to hook into the `wp_link_query` filter to add custom entries when the query returned no posts. Props mitraval192, msebel. Fixes #41825. git-svn-id: https://develop.svn.wordpress.org/trunk@41346 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
5c3d713beb
commit
804fc41181
@ -1623,9 +1623,6 @@ final class _WP_Editors {
|
||||
// Do main query.
|
||||
$get_posts = new WP_Query;
|
||||
$posts = $get_posts->query( $query );
|
||||
// Check if any posts were found.
|
||||
if ( ! $get_posts->post_count )
|
||||
return false;
|
||||
|
||||
// Build results.
|
||||
$results = array();
|
||||
@ -1665,7 +1662,9 @@ final class _WP_Editors {
|
||||
* }
|
||||
* @param array $query An array of WP_Query arguments.
|
||||
*/
|
||||
return apply_filters( 'wp_link_query', $results, $query );
|
||||
$results = apply_filters( 'wp_link_query', $results, $query );
|
||||
|
||||
return ! empty( $results ) ? $results : false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
82
tests/phpunit/tests/editor/wpEditors.php
Normal file
82
tests/phpunit/tests/editor/wpEditors.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
if ( ! class_exists( '_WP_Editors', false ) ) {
|
||||
require_once ABSPATH . WPINC . '/class-wp-editor.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* @group editor
|
||||
*/
|
||||
class Tests_WP_Editors extends WP_UnitTestCase {
|
||||
public function wp_link_query_callback( $results ) {
|
||||
return array_merge( $results, array(
|
||||
array(
|
||||
'ID' => 123,
|
||||
'title' => 'foo',
|
||||
'permalink' => 'bar',
|
||||
'info' => 'baz',
|
||||
),
|
||||
) );
|
||||
}
|
||||
|
||||
public function test_wp_link_query_returns_false_when_nothing_found() {
|
||||
$actual = _WP_Editors::wp_link_query( array( 's' => 'foobarbaz' ) );
|
||||
|
||||
$this->assertFalse( $actual );
|
||||
}
|
||||
|
||||
public function test_wp_link_query_returns_search_results() {
|
||||
$post = self::factory()->post->create_and_get( array( 'post_status' => 'publish' ) );
|
||||
$actual = _WP_Editors::wp_link_query( array( 's' => $post->post_title ) );
|
||||
|
||||
$this->assertEqualSets( array(
|
||||
array(
|
||||
'ID' => $post->ID,
|
||||
'title' => $post->post_title,
|
||||
'permalink' => get_permalink( $post->ID ),
|
||||
'info' => mysql2date( __( 'Y/m/d' ), $post->post_date ),
|
||||
),
|
||||
), $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 41825
|
||||
*/
|
||||
public function test_wp_link_query_returns_filtered_result_when_nothing_found() {
|
||||
add_filter( 'wp_link_query', array( $this, 'wp_link_query_callback' ) );
|
||||
$actual = _WP_Editors::wp_link_query( array( 's' => 'foobarbaz' ) );
|
||||
remove_filter( 'wp_link_query', array( $this, 'wp_link_query_callback' ) );
|
||||
|
||||
$this->assertEqualSets( array(
|
||||
array(
|
||||
'ID' => 123,
|
||||
'title' => 'foo',
|
||||
'permalink' => 'bar',
|
||||
'info' => 'baz',
|
||||
),
|
||||
), $actual );
|
||||
}
|
||||
|
||||
public function test_wp_link_query_returns_filtered_search_results() {
|
||||
$post = self::factory()->post->create_and_get( array( 'post_status' => 'publish' ) );
|
||||
|
||||
add_filter( 'wp_link_query', array( $this, 'wp_link_query_callback' ) );
|
||||
$actual = _WP_Editors::wp_link_query( array( 's' => $post->post_title ) );
|
||||
remove_filter( 'wp_link_query', array( $this, 'wp_link_query_callback' ) );
|
||||
|
||||
$this->assertEqualSets( array(
|
||||
array(
|
||||
'ID' => $post->ID,
|
||||
'title' => $post->post_title,
|
||||
'permalink' => get_permalink( $post->ID ),
|
||||
'info' => mysql2date( __( 'Y/m/d' ), $post->post_date ),
|
||||
),
|
||||
array(
|
||||
'ID' => 123,
|
||||
'title' => 'foo',
|
||||
'permalink' => 'bar',
|
||||
'info' => 'baz',
|
||||
),
|
||||
), $actual );
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user