Make WordPress Core


Ignore:
Timestamp:
01/21/2021 01:35:16 AM (4 years ago)
Author:
flixos90
Message:

Robots: Introduce Robots API.

This changeset introduces a filter-based Robots API, providing central control over the robots meta tag.

  • Introduces wp_robots() function which should be called anywhere a robots meta tag should be included.
  • Introduces wp_robots filter which allows adding or modifying directives for the robots meta tag. The wp_robots() function is entirely filter-based, i.e. if no filter is added to wp_robots, no directives will be present, and therefore the entire robots meta tag will be omitted.
  • Introduces the following wp_robots filter functions which replace similar existing functions that were manually rendering a robots meta tag:
    • wp_robots_noindex() replaces noindex(), which has been deprecated.
    • wp_robots_no_robots() replaces wp_no_robots(), which has been deprecated.
    • wp_robots_sensitive_page() replaces wp_sensitive_page_meta(), which has been deprecated. Its rendering of the referrer meta tag has been moved to another new function wp_strict_cross_origin_referrer().

Migration to the new functions is straightforward. For example, a call to add_action( 'wp_head', 'wp_no_robots' ) should be replaced with add_filter( 'wp_robots', 'wp_robots_no_robots' ).

Plugins and themes that render their own robots meta tags are encouraged to switch to rely on the wp_robots filter in order to use the central management layer now provided by WordPress core.

Props adamsilverstein, flixos90, timothyblynjacobs, westonruter.
See #51511.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/general/template.php

    r49847 r49992  
    473473
    474474        $this->assertSame( $expected, $result );
    475     }
    476 
    477     /**
    478      * @ticket 43590
    479      */
    480     function test_wp_no_robots() {
    481         // Simulate private site (search engines discouraged).
    482         update_option( 'blog_public', '0' );
    483         $actual_private = get_echo( 'wp_no_robots' );
    484         $this->assertSame( "<meta name='robots' content='noindex,nofollow' />\n", $actual_private );
    485 
    486         // Simulate public site.
    487         update_option( 'blog_public', '1' );
    488         $actual_public = get_echo( 'wp_no_robots' );
    489         $this->assertSame( "<meta name='robots' content='noindex,follow' />\n", $actual_public );
    490475    }
    491476
Note: See TracChangeset for help on using the changeset viewer.