wordpress規(guī)則 wordpress!

如何在WordPress中自定義URL規(guī)則

大體實(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ù)的訪問(wèn)就可以了。

在需要獲取idx參數(shù)值的寂寞中,如下代碼就可以得到了:

#打印所有參數(shù)

var_dump($wp_query-query_vars);

#取得idx參數(shù)和值

$idx = get_query_var('idx');

如何在wordpress中創(chuàng)建配置自己的重寫規(guī)則

關(guān)于wordpress的重寫規(guī)則,可以查看wp-includes/rewrite.php源碼

wordpress通過(guò)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等等,不過(guò)這些在應(yīng)用簡(jiǎn)單的重寫規(guī)則時(shí)沒(méi)有add_rewrite_rule來(lái)得直接。

需要注意的是,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頁(yè)面,用來(lái)介紹指定的電影信息,則該頁(yè)面的完整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,參考上面的說(shuō)明

add_rewrite_rule(

//?該正則用來(lái)匹配傳入的URL

'movies/([^/]+)/?',

//?`pagename`?代表這是個(gè)頁(yè)面

//?`movie_name`?用來(lái)保存匹配到內(nèi)容

'index.php?pagename=moviesmovie_name=$matches[1]',

//?rewrite?rules提供的其實(shí)是一組數(shù)組用來(lái)匹配傳入的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)擊保存按鈕后就可以訪問(wèn)試試效果了。

在當(dāng)前皮膚的page.php里置入下面的代碼:

echo?get_query_var('movie_name');

看能否顯示出killbill.

wordpress靜態(tài)規(guī)則怎么設(shè)置

檢測(cè)主機(jī)是否支持偽靜態(tài)的方法:在WP后臺(tái) 設(shè)置 固定鏈接,設(shè)置為?非默認(rèn)帶?的那種結(jié)構(gòu),然后訪問(wèn)任何一篇文章,如果出現(xiàn) 404 錯(cuò)誤,說(shuō)明你的主機(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ī)下常見(jiàn)的環(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)頁(yè)名稱:wordpress規(guī)則 wordpress!
網(wǎng)址分享:http://bm7419.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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)