diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php
index bece4e7914..951020d387 100644
--- a/src/wp-includes/functions.php
+++ b/src/wp-includes/functions.php
@@ -1582,6 +1582,8 @@ function do_feed_atom( $for_comments ) {
* Displays the default robots.txt file content.
*
* @since 2.1.0
+ * @since 5.3.0 Remove the "Disallow: /" output if search engine visiblity is
+ * discouraged in favor of robots meta HTML tag in wp_no_robots().
*/
function do_robots() {
header( 'Content-Type: text/plain; charset=utf-8' );
@@ -1595,14 +1597,11 @@ function do_robots() {
$output = "User-agent: *\n";
$public = get_option( 'blog_public' );
- if ( '0' == $public ) {
- $output .= "Disallow: /\n";
- } else {
- $site_url = parse_url( site_url() );
- $path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : '';
- $output .= "Disallow: $path/wp-admin/\n";
- $output .= "Allow: $path/wp-admin/admin-ajax.php\n";
- }
+
+ $site_url = parse_url( site_url() );
+ $path = ( ! empty( $site_url['path'] ) ) ? $site_url['path'] : '';
+ $output .= "Disallow: $path/wp-admin/\n";
+ $output .= "Allow: $path/wp-admin/admin-ajax.php\n";
/**
* Filters the robots.txt output.
diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php
index d6bcc019b1..614853860f 100644
--- a/src/wp-includes/general-template.php
+++ b/src/wp-includes/general-template.php
@@ -2986,12 +2986,18 @@ function noindex() {
* Display a noindex meta tag.
*
* Outputs a noindex meta tag that tells web robots not to index the page content.
- * Typical usage is as a wp_head callback. add_action( 'wp_head', 'wp_no_robots' );
+ * Typical usage is as a {@see 'wp_head'} callback. add_action( 'wp_head', 'wp_no_robots' );
*
* @since 3.3.0
+ * @since 5.3.0 Echo "noindex,nofollow" if search engine visibility is discouraged.
*/
function wp_no_robots() {
- echo "\n";
+ if ( get_option( 'blog_public' ) ) {
+ echo "\n";
+ return;
+ }
+
+ echo "\n";
}
/**
diff --git a/tests/phpunit/tests/general/template.php b/tests/phpunit/tests/general/template.php
index daa77da5b9..fa6636170c 100644
--- a/tests/phpunit/tests/general/template.php
+++ b/tests/phpunit/tests/general/template.php
@@ -612,4 +612,19 @@ class Tests_General_Template extends WP_UnitTestCase {
$this->assertSame( $expected, $result );
}
+
+ /**
+ * @ticket 43590
+ */
+ function test_wp_no_robots() {
+ // Simulate private site (search engines discouraged).
+ update_option( 'blog_public', '0' );
+ $actual_private = get_echo( 'wp_no_robots' );
+ $this->assertSame( "\n", $actual_private );
+
+ // Simulate public site.
+ update_option( 'blog_public', '1' );
+ $actual_public = get_echo( 'wp_no_robots' );
+ $this->assertSame( "\n", $actual_public );
+ }
}