如何修复WordPress站点谷歌搜索结果显示URL而非站点名称
问题解决方向
一、定位并修改站点标题的生成逻辑
你在父主题header.php里看到的<?php do_action('xblog_site_title'); ?>是生成站点标题的钩子,父主题的标题代码通过这个钩子的回调函数输出,你可以在子主题里重写这个逻辑:
- 打开父主题的
functions.php,搜索add_action('xblog_site_title',找到对应的回调函数名(比如假设是xblog_display_site_title)。 - 在子主题的
functions.php中添加以下代码,替换原有的标题输出:
// 移除父主题的站点标题生成动作 remove_action('xblog_site_title', 'xblog_display_site_title'); // 添加自定义站点标题输出 add_action('xblog_site_title', 'custom_site_title_output'); function custom_site_title_output() { $site_name = esc_html(get_bloginfo('name')); $home_url = esc_url(home_url('/')); // 首页显示纯文本标题(避免链接干扰搜索引擎识别),其他页面保留链接 if (is_front_page()) { echo '<h1 class="site-title">' . $site_name . '</h1>'; } else { echo '<h1 class="site-title"><a href="' . $home_url . '" rel="home">' . $site_name . '</a></h1>'; } }
注意:把代码里的xblog_display_site_title替换成你从父主题找到的实际回调函数名
二、关于index.php代码的疑问
你提到的这段代码:
if ( is_home() && ! is_front_page() ) : ?> <header> <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1> </header>
- 它只会在博客列表页(非首页)生效(比如首页是静态页面,单独的博客列表页才会触发),首页根本不会输出这段内容,所以删除它无法解决你的首页问题。
- 这段代码和单篇文章的SEO标题完全无关,删除后不会影响文章在搜索结果中的标题显示。
三、优先排查核心问题:页面标签 <a class="header-anchor" href="#三、优先排查核心问题:页面标签" aria-hidden="true">#</a></h2>
<p>谷歌搜索结果的标题主要来自页面的<code><title></code>标签,而非页面内的H1文本,你需要先检查首页源码中的<code><title></code>内容:</p>
<ul>
<li>如果<code><title></code>里显示的是URL而非站点名称,才是问题根源。</li>
<li>解决方法:
<ol>
<li>安装SEO插件(如Yoast SEO、Rank Math),通过插件设置首页的标题模板为<code>站点名称 | 站点描述</code>。</li>
<li>若不想用插件,可在子主题<code>functions.php</code>中添加代码自定义标题:</li>
</ol>
</li>
</ul>
<pre class="hljs"><code class="language-php volc-pre-code">add_filter('document_title_parts', 'custom_homepage_title');
function custom_homepage_title($title_parts) {
if (is_front_page()) {
$title_parts['title'] = get_bloginfo('name');
$title_parts['tagline'] = get_bloginfo('description');
}
return $title_parts;
}
</code></pre>
<p>内容的提问来源于stack exchange,提问作者Fly Ball</p>
相关产品推荐
相关产品推荐

