wordpress-develop/tests/phpunit/tests/query/vars.php
Sergey Biryukov ef6973b7f0 Bootstrap/Load: Make handling the /favicon.ico requests more flexible.
Previously, `wp_favicon_request()` was introduced in [13205] to avoid a performance hit of serving a full 404 page on every favicon request.

While working as intended, that implementation did not provide a way for theme or plugin authors to manage the behavior of favicon requests.

This changeset implements the following logic (only applied if WordPress is installed in the root directory):

* If there is a Site Icon set in Customizer, redirect `/favicon.ico` requests to that icon.
* Otherwise, use the WordPress logo as a default icon.
* If a physical `/favicon.ico` file exists, do nothing, let the server handle the request.

Handling `/favicon.ico` is now more consistent with handling `/robots.txt` requests.

New functions and hooks:

* Introduce `is_favicon()` conditional tag to complement `is_robots()`.
* Introduce `do_favicon` action to complement `do_robots` and use it in template loader.
* Introduce `do_favicon()` function, hooked to the above action by default, to complement `do_robots()`.
* Introduce `do_faviconico` action to complement `do_robotstxt`, for plugins to override the default behavior.
* Mark `wp_favicon_request()` as deprecated in favor of `do_favicon()`.

Props jonoaldersonwp, birgire, joostdevalk, mukesh27, SergeyBiryukov.
Fixes #47398.

git-svn-id: https://develop.svn.wordpress.org/trunk@47018 602fd350-edb4-49c9-b593-d223f7449a82
2019-12-28 21:18:03 +00:00

81 lines
1.2 KiB
PHP

<?php
/**
* Tests to make sure query vars are as expected.
*
* @group query
*/
class Tests_Query_Vars extends WP_UnitTestCase {
/**
* @ticket 35115
*/
public function testPublicQueryVarsAreAsExpected() {
global $wp;
// Re-initialise any dynamically-added public query vars:
do_action( 'init' );
$this->assertEquals(
array(
// Static public query vars:
'm',
'p',
'posts',
'w',
'cat',
'withcomments',
'withoutcomments',
's',
'search',
'exact',
'sentence',
'calendar',
'page',
'paged',
'more',
'tb',
'pb',
'author',
'order',
'orderby',
'year',
'monthnum',
'day',
'hour',
'minute',
'second',
'name',
'category_name',
'tag',
'feed',
'author_name',
'pagename',
'page_id',
'error',
'attachment',
'attachment_id',
'subpost',
'subpost_id',
'preview',
'robots',
'favicon',
'taxonomy',
'term',
'cpage',
'post_type',
'embed',
// Dynamically added public query vars:
'post_format',
'rest_route',
),
$wp->public_query_vars,
'Care should be taken when introducing new public query vars. See https://core.trac.wordpress.org/ticket/35115'
);
}
}