大體實(shí)現(xiàn)如下:
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的龍亭網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1. 固定鏈接URL定義為: /health/A/
2. 實(shí)際URL為:index.php?category_name=idx=
實(shí)際代碼如下:
# 找到模板目錄下面的functions.php 添加下面代碼
function add_query_vars($aVars) {
$aVars[] = "idx";
return $aVars;
}
// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');
function add_rewrite_rules($aRules) {
$aNewRules = array('(health)/([^/]+)/?$' = 'index.php?category_name=$matches[1]idx=$matches[2]');
$aRules = $aNewRules + $aRules;
return $aRules;
}
// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');
到這里已經(jīng)實(shí)現(xiàn)自定義URL規(guī)則的固定鏈接。
那么如何獲取URL中的參數(shù)呢? 其實(shí)知道這是Wordpress自身的路由實(shí)現(xiàn)就好明白了。 既然是WP的路由,那么我們就像別的框架一樣使用WP的獲取URL的參數(shù)的訪問就可以了。
在需要獲取idx參數(shù)值的寂寞中,如下代碼就可以得到了:
#打印所有參數(shù)
var_dump($wp_query-query_vars);
#取得idx參數(shù)和值
$idx = get_query_var('idx');
關(guān)于wordpress的重寫規(guī)則,可以查看wp-includes/rewrite.php源碼
wordpress通過flush_rewrite_rules向options數(shù)據(jù)表保存規(guī)則內(nèi)容
通常,使用add_rewrite_rule這個(gè)函數(shù)即可實(shí)現(xiàn)簡(jiǎn)單的重寫規(guī)則的添加動(dòng)作;
還有add_rewrite_tag、add_permastruct等等,不過這些在應(yīng)用簡(jiǎn)單的重寫規(guī)則時(shí)沒有add_rewrite_rule來得直接。
需要注意的是,add_rewrite_rule之后要想起到預(yù)期的效果,必須執(zhí)行flush_rewrite_rules動(dòng)作,但不建議利用代碼多次執(zhí)行flush操作。
而應(yīng)該在需要的時(shí)候再執(zhí)行,比如插件啟用時(shí)由register_activation_hook這個(gè)鉤子發(fā)起該動(dòng)作,或者需要時(shí)再到后臺(tái)固定鏈接里點(diǎn)保存按鈕也可以實(shí)現(xiàn)該動(dòng)作。
-- 舉例 --
比如新創(chuàng)建個(gè)movies頁面,用來介紹指定的電影信息,則該頁面的完整url地址應(yīng)為:
;movie_name=killbill
movie_name是想傳入的參數(shù)
現(xiàn)在需重寫為
步驟:
1、add_rewrite_rule
add_action(?'init',?'wpdit_bq1579112796568320460'?);
function?wpdit_bq1579112796568320460()?{
//?添加該規(guī)則后需手動(dòng)執(zhí)行flush?write?rules,參考上面的說明
add_rewrite_rule(
//?該正則用來匹配傳入的URL
'movies/([^/]+)/?',
//?`pagename`?代表這是個(gè)頁面
//?`movie_name`?用來保存匹配到內(nèi)容
'index.php?pagename=moviesmovie_name=$matches[1]',
//?rewrite?rules提供的其實(shí)是一組數(shù)組用來匹配傳入的URL
//?所以,當(dāng)有近似的正則匹配時(shí),總是第1個(gè)匹配到的被返回
//?因這個(gè)重寫規(guī)則為后加的特定規(guī)則,故將此添加到頂部
'top'?);
}
2、wordpress內(nèi)置了一組查詢變量存于query_vars,不在其內(nèi)的變量會(huì)被忽略;
所以需事先告訴wordpress關(guān)于movie_name是什么,并允許movie_name這個(gè)變量以便后面的引用。
添加方法:
add_filter(?'query_vars',?'wpdit_bq1579112796568320460_query_vars'?);
function?wpdit_bq1579112796568320460_query_vars(?$query_vars?)
{
$query_vars[]?=?'movie_name';
return?$query_vars;
}
最后,后臺(tái)設(shè)置固定鏈接里,點(diǎn)擊保存按鈕后就可以訪問試試效果了。
在當(dāng)前皮膚的page.php里置入下面的代碼:
echo?get_query_var('movie_name');
看能否顯示出killbill.
檢測(cè)主機(jī)是否支持偽靜態(tài)的方法:在WP后臺(tái) 設(shè)置 固定鏈接,設(shè)置為?非默認(rèn)帶?的那種結(jié)構(gòu),然后訪問任何一篇文章,如果出現(xiàn) 404 錯(cuò)誤,說明你的主機(jī)當(dāng)前不支持 WordPress 偽靜態(tài)。
IIS偽靜態(tài)規(guī)則
IIS 環(huán)境是 Windows 主機(jī)常用的服務(wù)器環(huán)境,新建一個(gè) txt 文件,將下面的代碼添加到文件中:
[ISAPI_Rewrite]
#?Defend?your?computer?from?some?worm?attacks
#RewriteRule?.*(?:global.asa|default\.ida|root\.exe|\.\.).*?.?[F,I,O]
#?3600?=?1?hour
CacheClockRate?3600
RepeatLimit?32
#?Protect?httpd.ini?and?httpd.parse.errors?files
#?from?accessing?through?HTTP
#?Rules?to?ensure?that?normal?content?gets?through
RewriteRule?/tag/(.*)?/index\.php\?tag=$1
RewriteRule?/software-files/(.*)?/software-files/$1?[L]
RewriteRule?/images/(.*)?/images/$1?[L]
RewriteRule?/sitemap.xml?/sitemap.xml?[L]
RewriteRule?/favicon.ico?/favicon.ico?[L]
#?For?file-based?wordpress?content?(i.e.?theme),?admin,?etc.
RewriteRule?/wp-(.*)?/wp-$1?[L]
#?For?normal?wordpress?content,?via?index.php
RewriteRule?^/$?/index.php?[L]
RewriteRule?/(.*)?/index.php/$1?[L]
然后另存為 httpd.ini 文件,上傳到WordPress站點(diǎn)的根目錄即可。
Apache偽靜態(tài)規(guī)則
Apache是 Linux 主機(jī)下常見的環(huán)境,現(xiàn)在一般的 Linux 虛擬主機(jī)都采用這種環(huán)境。新建一個(gè) htaccess.txt 文件,添加下面的代碼:
IfModule?mod_rewrite.c
RewriteEngine?On
RewriteBase?/
RewriteRule?^index\.php$?-?[L]
RewriteCond?%{REQUEST_FILENAME}?!-f
RewriteCond?%{REQUEST_FILENAME}?!-d
RewriteRule?.?/index.php?[L]
/IfModule
然后上傳到 WordPress 站點(diǎn)的根目錄,重命名為 .htaccess 即可
Nginx偽靜態(tài)規(guī)則
Nginx環(huán)境一般是Linux 主機(jī) VPS或服務(wù)器用戶用的比較多,這些用戶一般都會(huì)自己配置Nginx,或者有專門的人幫你配置,打開 nginx.conf 或者某個(gè)站點(diǎn)的配置環(huán)境,比如 wpdaxue.com.conf(不同人配置的不一樣),在? server?? { } 大括號(hào)里面添加下面的代碼:
location?/?{
if?(-f?$request_filename/index.html){
rewrite?(.*)?$1/index.html?break;
}
if?(-f?$request_filename/index.php){
rewrite?(.*)?$1/index.php;
}
if?(!-f?$request_filename){
rewrite?(.*)?/index.php;
}
}
保存,重啟 Nginx 即可。
網(wǎng)頁名稱:wordpress規(guī)則 wordpress!
網(wǎng)址分享:http://jinyejixie.com/article22/dohpdjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站維護(hù)、網(wǎng)站收錄、自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)