在WordPress開發(fā)過程中,獲取當(dāng)前頁(yè)面的URL是一個(gè)常見需求。WordPress提供了多個(gè)內(nèi)置函數(shù)來(lái)幫助開發(fā)者輕松獲取當(dāng)前網(wǎng)址的不同部分。本文將詳細(xì)介紹這些函數(shù)及其使用方法。
常用當(dāng)前網(wǎng)址函數(shù)
1. home_url()
home_url()
函數(shù)返回WordPress站點(diǎn)的首頁(yè)URL,可以在任何模板文件中使用:
$home_url = home_url();
// 輸出類似:https://example.com
2. site_url()
site_url()
函數(shù)返回WordPress安裝目錄的URL,通常與home_url()相同,除非WordPress安裝在子目錄中:
$site_url = site_url();
// 輸出類似:https://example.com
3. get_permalink()
獲取當(dāng)前文章或頁(yè)面的永久鏈接:
$current_url = get_permalink();
// 輸出當(dāng)前文章/頁(yè)面的完整URL
4. get_the_permalink()
與get_permalink()功能相同,但在循環(huán)中使用更簡(jiǎn)潔:
$current_url = get_the_permalink();
5. get_bloginfo(‘url’)
獲取WordPress地址(URL)設(shè)置中的值:
$blog_url = get_bloginfo('url');
獲取完整當(dāng)前URL
WordPress沒有直接提供獲取完整當(dāng)前URL的函數(shù),但可以通過以下代碼實(shí)現(xiàn):
global $wp;
$current_url = home_url( $wp->request );
或者使用PHP原生方法:
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
獲取URL特定部分
1. 獲取當(dāng)前頁(yè)面路徑
$path = parse_url($current_url, PHP_URL_PATH);
2. 獲取查詢字符串
$query_string = $_SERVER['QUERY_STRING'];
實(shí)際應(yīng)用示例
1. 創(chuàng)建返回按鈕
<a href="<?php echo esc_url(home_url()); ?>">返回首頁(yè)</a>
2. 獲取并比較當(dāng)前URL
$current_url = home_url( $wp->request );
if ($current_url === home_url('/about-us/')) {
echo '您正在訪問關(guān)于我們頁(yè)面';
}
3. 在表單中使用當(dāng)前URL
<form action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" method="post">
<!-- 表單內(nèi)容 -->
</form>
注意事項(xiàng)
- 輸出URL時(shí)務(wù)必使用
esc_url()
函數(shù)進(jìn)行轉(zhuǎn)義,防止XSS攻擊 - 在插件或主題開發(fā)中,考慮使用過濾器如
home_url
和site_url
來(lái)修改URL - 在多站點(diǎn)網(wǎng)絡(luò)中,這些函數(shù)會(huì)自動(dòng)處理當(dāng)前站點(diǎn)的URL
掌握這些WordPress網(wǎng)址函數(shù),可以讓你更靈活地處理各種URL相關(guān)需求,提升開發(fā)效率和安全性。