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

WordPress 獲取文章連結 get_permalink() 與頁面標題 wp_title() 完整用法解析

     編輯:PHP 綜合知識

前言

get_permalink() 是取得文章/頁面規範連結的標準函數;wp_title() 是輸出網頁 <title> 標籤內容的核心函數。本文完整解析參數、回傳值、實戰範例、SEO 優化技巧與常見誤區。

get_permalink() — 取得文章/頁面永久連結

函數原型

get_permalink( $post = 0, $leavename = false )

參數說明

參數型別預設說明
$postint|WP_Post0 (當前迴圈文章)文章 ID 或 WP_Post 物件
$leavenameboolfalsetrue 保留 %postname% 結構標記,不解析為實際 slug

回傳值

  • 成功:完整永久連結 (string)
  • 失敗:false (如文章不存在、狀態非發布)

常用範例

// 1. 迴圈中取得當前文章連結
echo get_permalink();

// 2. 依 ID 取得指定文章連結
echo '閱讀全文';

// 3. 依頁面標題取得頁面連結
$page = get_page_by_title('聯絡我們');
if ($page) {
    echo '聯絡我們';
}

// 4. 保留結構標記 (用於 JS 路由或重寫規則測試)
echo get_permalink(123, true); // 輸出: https://example.com/%postname%/

進階:取得自訂文章類型連結

// 產品頁面
$product = get_post(456);
if ($product && $product->post_type === 'product') {
    echo get_permalink($product);
}

// 使用 get_post_type_archive_link() 取得封存頁
echo get_post_type_archive_link('product');

wp_title() — 輸出/取得網頁標題

函數原型

wp_title( $sep = '»', $display = true, $seplocation = '' )

參數說明

參數型別預設說明
$sepstring» (»)分隔符號,建議用 '|' 或 '-'
$displaybooltruetrue 直接 echo,false 回傳字串
$seplocationstring'''right' 分隔符在右側 (較符合 SEO),其他值在左側

各頁面預設輸出內容

頁面類型預設標題內容
單篇文章文章標題
單一頁面頁面標題
分類封存分類名稱
標籤封存標籤名稱
日期封存年/月/日
作者封存作者顯示名稱
搜尋結果搜尋關鍵字
404 頁面Page not found
首頁 (非靜態首頁)最新文章標題

基本用法 (header.php)

<?php wp_title('|', true, 'right'); ?>
// 輸出範例: 文章標題 | 網站名稱

SEO 優化:使用 wp_title filter 自定義標題結構

現代最佳實務:title-tag 主題支援 (WP 4.1+)

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

// WordPress 自動輸出 ,可透過 filter 修改
add_filter('document_title_parts', function($parts) {
    // $parts 陣列包含: title, site, tagline, page, separator
    // 範例:首頁只顯示網站名稱
    if (is_front_page()) {
        unset($parts['tagline']);
        $parts['title'] = $parts['site'];
    }
    return $parts;
});

// 修改分隔符
add_filter('document_title_separator', function() {
    return '|';
});</pre>

<h3>舊版相容:wp_title filter</h3>
<pre class="brush:php;">add_filter('wp_title', function($title, $sep, $seplocation) {
    global $page, $paged;
    
    // 添加分頁號
    if ($paged >= 2 || $page >= 2) {
        $title .= " $sep " . sprintf(__('第 %s 頁'), max($paged, $page));
    }
    
    // 首頁添加網站名稱與描述
    if (is_front_page()) {
        $title = get_bloginfo('name') . $sep . get_bloginfo('description');
    }
    
    return $title;
}, 10, 3);</pre>

<h2>常見誤區與最佳實務</h2>
<table border="1" cellpadding="6" cellspacing="0">
<tr><th>誤區</th><th>正確做法</th></tr>
<tr><td>在 header.php 寫死 <title>網站名稱</title></td><td>使用 wp_title() 或 title-tag 主題支援</td></tr>
<tr><td>wp_title() 未設定 seplocation='right'</td><td>加上 'right' 讓網站名稱在右側 (SEO 較佳)</td></tr>
<tr><td>get_permalink() 未用 esc_url() 輸出</td><td>永遠 esc_url() 後再輸出到 HTML 屬性</td></tr>
<tr><td>在迴圈外用 get_permalink() 不傳 ID</td><td>明確傳入 ID 或 WP_Post 物件</td></tr>
<tr><td>自訂文章類型單頁標題異常</td><td>確認 post_type 支援 title-tag 或自行 filter 修正</td></tr>
</table>

<h2>原始碼位置</h2>
<ul>
    <li><code>get_permalink()</code>:<code>wp-includes/link-template.php</code></li>
    <li><code>wp_title()</code>:<code>wp-includes/general-template.php</code></li>
</ul>

<h2>小結</h2>
<p><code>get_permalink()</code> 是取得文章連結的唯一標準入口,配合 <code>esc_url()</code> 確保輸出安全。<code>wp_title()</code> 雖為舊函數,但透過 <code>document_title_parts</code> filter (WP 4.1+) 可實現完整 SEO 標題控制。現代主題建議宣告 <code>add_theme_support('title-tag')</code>,讓核心自動管理 <code><title></code>,開發者專注於 filter 修改標題結構即可。</p>
							<div class="qcxs_ie_he"></div>
						</div>
						<div class="akevx_own"> <script language='javascript' src='/ad/p.js'></script></div>
						<div class="akevx_mj"> </div>	
						<div class="qcxs_ie_he"></div>
						
						<ol class="qmsbvx_hsb ovv_hex">
							<li>上一篇文章: <a class='LinkPrevArticle' href='https://code.yunyiwangluo.com/bianchen/phpzh/58601.html' >PHP 檔案下載中文檔名亂碼完整解決方案:URL 編碼、RFC 5987、瀏覽器相容性處理</a> <li>下一篇文章: <a class='LinkNextArticle' href='https://code.yunyiwangluo.com/bianchen/phpzh/58603.html'  >PHP 提交 POST 陣列參數完整解析:表單命名規則、序列化傳遞與 Base64 編碼實務</a> 
						</ol>
					</div>
				</div>
				<div class="qirnxbd bg1 mt20">
					<div class="jdbsbav">
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/' target="_blank">PHP 綜合知識</a>
						<div class="jdbsbav_hx"></div>
					</div>
					<div class="qirnxbd_rbx">
						
						<div class="oiendx">
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/121828.html' target="_blank"><img  src='https://code.yunyiwangluo.com/bianchen/UploadFiles_4619/201701/2017011415114326_S.jpg'  width='100' height='70' alt='PHP SPL 資料結構實戰:Stack、Queue、Heap、FixedArray'  border='0'></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/121828.html' target="_blank"><strong>PHP SPL 資料結構實戰:Stack、Queue、Heap、FixedArray</strong></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/121828.html' target="_blank"><p>為什麼用 SPL 而不直接用陣列?

語意明確:SplSta</p></a>			
						</div>
						
						<div class="oiendx">
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/121756.html' target="_blank"><img  src='https://code.yunyiwangluo.com/bianchen/UploadFiles_4619/201701/2017011415101916_S.jpg'  width='100' height='70' alt='clicaptcha:基於 PHP 與 jQuery 的中文點擊驗證碼插件'  border='0'></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/121756.html' target="_blank"><strong>clicaptcha:基於 PHP 與 jQuery 的中文點擊驗證碼插件</strong></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/121756.html' target="_blank"><p>clicaptcha - 中文點擊驗證碼插件
clicapt</p></a>			
						</div>
						
						<div class="oiendx">
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/60666.html' target="_blank"><img  src='https://code.yunyiwangluo.com/bianchen/UploadFiles_4619/201701/2017011013223178.png'  width='100' height='70' alt='PHP 實作萬年曆完整教學與程式碼解析'  border='0'></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/60666.html' target="_blank"><strong>PHP 實作萬年曆完整教學與程式碼解析</strong></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/60666.html' target="_blank"><p>PHP 萬年曆核心邏輯解析
要使用 PHP 實作萬年曆功能,</p></a>			
						</div>
						
						<div class="oiendx">
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/62357.html' target="_blank"><img  src='https://code.yunyiwangluo.com/bianchen/UploadFiles_4619/201701/2017011014351139_S.jpg'  width='100' height='70' alt='Windows 環境變數設定:讓 CMD 直接使用 MySQL 指令(以 Win7 為例)'  border='0'></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/62357.html' target="_blank"><strong>Windows 環境變數設定:讓 CMD 直接使用 MySQL 指令(以 Win7 為例)</strong></a>
							<a href='https://code.yunyiwangluo.com/bianchen/phpzh/62357.html' target="_blank"><p>操作步驟

右鍵「電腦」→「內容」→「進階系統設定」→「環境</p></a>			
						</div>
						
						<div class="qcxs_ie_he"></div>
					</div>
				</div>
			</div>
			<div class="eccsgxsg mt20">
				
				<div class="akevx_oin"> </div>	
				<div class="nenxnxb bg1 mt20">
					<div class="enxvsfgg">
						<div class="enxvsfgg_1"></div>
					</div>
					<div class="pdirbvx lbhevs ovv_hex">
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/122217.html' target="_blank">DedeCMS 解決無子欄目時自動調用同級欄目問題</a>
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/109923.html' target="_blank">PHP 效能優化 15 大實戰技巧</a>
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/59423.html' target="_blank">使用 XHGui 進行 PHP 性能分析:從安裝到瓶頸定位完整教程</a>
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/16297.html' target="_blank">PHP Y2K38 年份 2038 問題成因與解決方案</a>
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/64511.html' target="_blank">PHP 隨機數函數深度對比:為什麼 mt_rand() 完勝 rand()?</a>
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/59678.html' target="_blank">深度解析 PHP 偽隨機數與真隨機數:原理、差異與最佳實踐</a>
						
						<a href='https://code.yunyiwangluo.com/bianchen/phpzh/110120.html' target="_blank">PHP 生成網頁快照:基於第三方 API 的截圖服務整合</a>
						
					</div>
				</div>
			
				<div class="eqibneb bg1 mt20">
					<div class="lkebxsg">欄目導航</div>
					<div class="eqibneb_1 ovv_hex">
						<li><a class='childclass' href='https://code.yunyiwangluo.com/bianchen/phpjc/' target="_self">PHP 基礎</a></li>
<li><a class='childclass' href='https://code.yunyiwangluo.com/bianchen/phpzh/' target="_self">PHP 綜合知識</a></li>
<li><a class='childclass' href='https://code.yunyiwangluo.com/bianchen/phprm/' target="_self">PHP 入門</a></li>
<li><a class='childclass' href='https://code.yunyiwangluo.com/bianchen/gyphp/' target="_self">PHP 相關知識</a></li>
					</div>
					
				</div>
			</div>
			<div class="qcxs_ie_he"></div>
		</div>
	</div>
		<div class="qcxs_ie_he"></div>
	<div class="ebrxbsbf">Copyright © <a href="https://code.yunyiwangluo.com/" target="_blank" title="程式碼之家">程式碼之家</a> All Rights Reserved   </div>


</body>
</html>