You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress首页wp_title()返回空值,求原生PHP解决方案

解决WordPress首页wp_title()返回空的问题

我来帮你拆解问题并给出原生PHP的解决方案:

为什么你之前的代码无效?

你写的四个三元表达式都踩了同一个小坑:当条件为真(首页场景)时,你只是返回了"Home"字符串,但没有用echo把它输出到页面;而wp_title('')默认会直接输出内容(因为它的第二个参数$display默认是true),所以非首页能正常显示,但首页时没有任何内容输出,导致标题为空。

解决方案1:修复三元运算符写法

把字符串用echo输出,同时调整wp_title的参数让它返回字符串而非直接输出,写法更统一:

<title><?php echo is_front_page() ? "Home" : wp_title('', false); ?></title>

这里wp_title('', false)的第二个参数false表示让函数返回标题字符串,而不是直接输出,这样整个三元表达式的结果都通过echo输出,首页就能正常显示"Home"了。

解决方案2:更灵活的条件判断(推荐)

如果想让首页显示站点名称(更符合SEO规范),其他页面显示「页面标题 + 站点名称」,可以这样写:

<title><?php
if (is_front_page()) {
    // 首页显示站点名称,也可以改成你想要的"Home"
    echo get_bloginfo('name');
} else {
    // 非首页显示页面标题 + 分隔符 + 站点名称
    echo wp_title('', false) . ' | ' . get_bloginfo('name');
}
?></title>

解决方案3:通过过滤器全局控制(更规范)

如果你想在全局统一管理标题逻辑,推荐在主题的functions.php中添加过滤器:

add_filter('wp_title', 'custom_home_page_title', 10, 2);
function custom_home_page_title($title, $sep) {
    // 判断是否是首页
    if (is_front_page()) {
        return 'Home'; // 这里可以换成get_bloginfo('name')获取站点名称
    }
    // 非首页保留原有标题逻辑
    return $title;
}

之后模板里直接调用wp_title即可:

<title><?php wp_title(''); ?></title>

补充:is_front_page()和is_home()的区别

顺便提一句,is_front_page()判断的是你在WordPress后台设置的「首页」(不管是静态页面还是最新文章列表);而is_home()判断的是「文章列表页」。如果你的首页设置为静态页面,is_home()会指向你单独设置的「文章页」,所以用is_front_page()判断首页更准确。

内容的提问来源于stack exchange,提问作者Ali Bhutta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:22:53