Feeds: Prevent empty feeds from returning 404 errors.

Partial revert of [38929].

This reverts the source code from the commit for #30210 to prevent valid but empty feeds from returning 404 file not found errors for the home and custom feeds.

The tests in the commit that remain applicable are retained.

Props pavelevap for reporting, stevenkword for initial patch.
See #30210.
Fixes #39157.


git-svn-id: https://develop.svn.wordpress.org/trunk@40030 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Peter Wilson 2017-01-29 23:08:54 +00:00
parent 860e7ccccd
commit 99a101ff27
2 changed files with 0 additions and 49 deletions

View File

@ -1213,18 +1213,6 @@ function bool_from_yn( $yn ) {
function do_feed() {
global $wp_query;
// Determine if we are looking at the main comment feed
$is_main_comments_feed = ( $wp_query->is_comment_feed() && ! $wp_query->is_singular() );
/*
* Check the queried object for the existence of posts if it is not a feed for an archive,
* search result, or main comments. By checking for the absense of posts we can prevent rendering the feed
* templates at invalid endpoints. e.g.) /wp-content/plugins/feed/
*/
if ( ! $wp_query->have_posts() && ! ( $wp_query->is_archive() || $wp_query->is_search() || $is_main_comments_feed ) ) {
wp_die( __( 'ERROR: This is not a valid feed.' ), '', array( 'response' => 404 ) );
}
$feed = get_query_var( 'feed' );
// Remove the pad, if present.

View File

@ -457,41 +457,4 @@ class Tests_Feeds_RSS2 extends WP_UnitTestCase {
// There should only be one <rss> child element.
$this->assertEquals( 1, count( $rss ) );
}
/*
* Check to make sure we are not rendering feed templates for invalid feed endpoints.
* e.g. https://example.com/wp-content/feed/
*
* @ticket 30210
*/
function test_invalid_feed_endpoint() {
// An example of an invalid feed endpoint
$this->go_to( 'wp-content/feed/' );
// Queries performed on invalid feed endpoints should never contain posts.
$this->assertFalse( have_posts() );
// This is the assertion. Once the exception is thrown in do_feed, execution stops, preventing futher assertions.
$this->setExpectedException( 'WPDieException', 'ERROR: This is not a valid feed.' );
do_feed();
}
/*
* Make sure the requested feed is registered before rendering the requested template.
*
* @ticket 30210
*/
function test_nonexistent_feeds() {
global $wp_rewrite;
$badfeed = 'badfeed';
$this->assertNotContains( $badfeed, $wp_rewrite->feeds );
$this->go_to( '/?feed=' . $badfeed );
// This is the assertion. Once the exception is thrown in do_feed, execution stops, preventing futher assertions.
$this->setExpectedException( 'WPDieException', 'ERROR: This is not a valid feed template.' );
do_feed();
}
}