<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[60529] trunk/src/wp-admin: Site Health: Add a test and the related notice for the Search Engine Visibility setting.</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/60529">60529</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/60529","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>audrasjb</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2025-07-31 23:07:03 +0000 (Thu, 31 Jul 2025)</dd>
</dl>
<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Site Health: Add a test and the related notice for the Search Engine Visibility setting.
This changeset adds a new Site Health test to make site owners more aware when search engines are discouraged from indexing their sites.
It also increases the visibility of the related Dashboard widget notice.
Changes:
- Adds a new Site Health test under the "Privacy" category to check whether search engines are discouraged
- Displays "recommended" status when search engines are discouraged, with clear messaging to review settings
- Provides a direct link to the Reading Settings page to change this option
- Use a red/alert color to the dashicon used on the Dashboard widget notice
Props jeffr0, newyorkerlaura, joedolson, codente, abcd95, andrewhoyer, SirLouen, johnbillion, mymothersdaughter, audrasjb, Emlebrun, gaeldenysiak, beryldlg, Spaceshipone, coralietixeront, peterwilsoncc.
Fixes <a href="https://core.trac.wordpress.org/ticket/63375">#63375</a>.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadmincssdashboardcss">trunk/src/wp-admin/css/dashboard.css</a></li>
<li><a href="#trunksrcwpadminincludesclasswpsitehealthphp">trunk/src/wp-admin/includes/class-wp-site-health.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadmincssdashboardcss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/css/dashboard.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/css/dashboard.css 2025-07-31 22:47:24 UTC (rev 60528)
+++ trunk/src/wp-admin/css/dashboard.css 2025-07-31 23:07:03 UTC (rev 60529)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -442,6 +442,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> #dashboard_right_now .search-engines-info:before {
</span><span class="cx" style="display: block; padding: 0 10px"> content: "\f348";
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ color: #d63638;
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /* Dashboard WordPress events */
</span></span></pre></div>
<a id="trunksrcwpadminincludesclasswpsitehealthphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/class-wp-site-health.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/class-wp-site-health.php 2025-07-31 22:47:24 UTC (rev 60528)
+++ trunk/src/wp-admin/includes/class-wp-site-health.php 2025-07-31 23:07:03 UTC (rev 60529)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2688,6 +2688,49 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Tests whether search engine indexing is enabled.
+ *
+ * Surfaces as “good” if `blog_public === 1`, or “recommended” if `blog_public === 0`.
+ *
+ * @since 6.9
+ *
+ * @return array The test results.
+ */
+ public function get_test_search_engine_visibility() {
+ $result = array(
+ 'label' => __( 'Search engine indexing is enabled.', 'default' ),
+ 'status' => 'good',
+ 'badge' => array(
+ 'label' => __( 'Privacy', 'default' ),
+ 'color' => 'blue',
+ ),
+ 'description' => sprintf(
+ '<p>%s</p>',
+ __( 'Search engines can crawl and index your site. No action needed.', 'default' )
+ ),
+ 'actions' => sprintf(
+ '<p><a href="%1$s">%2$s</a></p>',
+ esc_url( admin_url( 'options-reading.php#blog_public' ) ),
+ __( 'Review your visibility settings', 'default' )
+ ),
+ 'test' => 'search_engine_visibility',
+ );
+
+ // If indexing is discouraged, flip to “recommended”:
+ if ( ! get_option( 'blog_public' ) ) {
+ $result['status'] = 'recommended';
+ $result['label'] = __( 'Search engines are discouraged from indexing this site.', 'default' );
+ $result['badge']['color'] = 'blue';
+ $result['description'] = sprintf(
+ '<p>%s</p>',
+ __( 'Your site is hidden from search engines. Consider enabling indexing if this is a public site.', 'default' )
+ );
+ }
+
+ return $result;
+ }
+
+ /**
</ins><span class="cx" style="display: block; padding: 0 10px"> * Returns a set of tests that belong to the site status page.
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * Each site status test is defined here, they may be `direct` tests, that run on page load, or `async` tests
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2775,6 +2818,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 'label' => __( 'Autoloaded options' ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'test' => 'autoloaded_options',
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'search_engine_visibility' => array(
+ 'label' => __( 'Search Engine Visibility' ),
+ 'test' => 'search_engine_visibility',
+ ),
</ins><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'async' => array(
</span><span class="cx" style="display: block; padding: 0 10px"> 'dotorg_communication' => array(
</span></span></pre>
</div>
</div>
</body>
</html>