首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

WordPress wp_title() 函數深度解析:動態頁面標題生成與 SEO 優化

     編輯:PHP 相關知識

函數作用

wp_title() 根據當前頁面類型(文章、頁面、分類、標簽、作者、歸檔、搜索、404 等)自動生成合適的頁面標題,**首頁不輸出內容**。

函數原型

wp_title( $sep = '»', $display = true, $seplocation = '' )
  • $sep:分隔符,默認 » (»)。
  • $display:true 直接輸出,false 返回字符串。
  • $seplocation:分隔符位置。'right' 表示分隔符在右側(標題在左),其他值為左側(標題在右)。

核心邏輯源碼解析(簡化流程)

  1. 判斷頁面類型:依次檢查 is_single()、is_page()、is_category()/is_tag()、is_tax()、is_author()、is_post_type_archive()、is_archive() (日期)、is_search()、is_404()。
  2. 獲取對應標題文本:
    • 文章/頁面:single_post_title('', false)
    • 分類/標簽/分類法:single_term_title('', false)
    • 作者:get_queried_object()->display_name
    • 日期歸檔:解析 get_query_var('m') 或 year/monthnum/day 組合。
    • 搜索:sprintf(__('Search Results %1$s %2$s'), $sep, $search)
    • 404:__('Page not found')
  3. 處理分隔符位置:$seplocation === 'right' 時反轉標題片段順序,實現「文章標題 | 站點名」利於 SEO 的格式。
  4. 應用過濾器:apply_filters('wp_title', $title, $sep, $seplocation),允許插件/主題修改最終標題。
  5. 輸出或返回。

最佳實踐:現代主題標題寫法

**不要在 <title> 標籤中直接調用 wp_title()**。WordPress 4.1+ 推薦使用 title-tag 主題支持:

// functions.php
add_theme_support( 'title-tag' );

WP 會自動在 <head> 輸出優化的 <title>,包含站點名、分頁碼等,並自動處理 wp_title 過濾器。

兼容舊主題/自定義需求

若必須手動控制:

<title>
<?php
// 1. 獲取 wp_title 內容(不輸出)
$page_title = wp_title('|', false, 'right'); // 分隔符在右,標題在左

// 2. 獲取站點名
$site_name = get_bloginfo('name');

// 3. 組合:文章標題 | 站點名
if ( $page_title ) {
    echo $page_title . $site_name;
} else {
    // 首頁:站點名 | 描述
    echo $site_name . ' | ' . get_bloginfo('description');
}
?>
</title>

常見過濾器應用

// 移除「分類/標簽/歸檔」頁面標題中的「分類:」「標簽:」前綴
add_filter( 'wp_title', function($title, $sep, $seplocation) {
    if ( is_category() || is_tag() || is_tax() ) {
        $title = single_term_title( '', false ); // 純名稱
    }
    return $title;
}, 10, 3 );

總結

  • wp_title() 是智能聚合函數,自動適配所有頁面類型。
  • 現代主題應使用 add_theme_support('title-tag') 讓核心接管標題輸出。
  • 理解其內部判斷邏輯與過濾器 wp_title,可實現高度定制的 SEO 標題策略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved