2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

[思路+代碼]WordPress實(shí)現(xiàn)根據(jù)多個(gè)自定義字段合并篩選數(shù)據(jù)

2015-07-30 21:52 欄目:技術(shù)開發(fā) 查看(18695)

WordPress是一個(gè)全球知名的開源web程序,據(jù)了解全球有超過(guò)20%的站點(diǎn)都是基于這款程序建立的,在國(guó)內(nèi)也是特別流行,一些大公司的團(tuán)隊(duì)博客等都是基于這個(gè)程序建立的。當(dāng)然知道的也知道,WordPress是一款博客程序,因此在默認(rèn)情況下并沒(méi)有像那種龐大的CMS系統(tǒng)一樣擁有豐富的、現(xiàn)成的功能。

那是不是WordPress就不適合來(lái)做某些CMS來(lái)做的事情了,肯定不是的!因?yàn)樗峁┝素S富的API,可以讓我們根據(jù)自己的需求來(lái)構(gòu)建無(wú)數(shù)功能模塊。也是因?yàn)檫@樣,我自己經(jīng)常用它來(lái)完成一些小項(xiàng)目,因?yàn)樵诔跏紶顟B(tài)下它很簡(jiǎn)單,而要什么功能在基于它來(lái)開發(fā),沒(méi)有多余的東西。比如國(guó)內(nèi)知名網(wǎng)站程序Discuz之類的,如果來(lái)做一個(gè)普通的企業(yè)網(wǎng)站那么就顯得太多余了,太龐大了,Discuz數(shù)據(jù)庫(kù)表就將近300張(含Ucenter);而WordPress只有11張表;但可以基于它擴(kuò)展很多功能。

最近的一個(gè)項(xiàng)目,可以說(shuō)不是普通常規(guī)的網(wǎng)站,但就各個(gè)模塊來(lái)說(shuō)又是常規(guī)的;最后我選定了用WordPress來(lái)做,當(dāng)然事實(shí)上這并不是一個(gè)省時(shí)間的方式。但我這個(gè)人就喜歡尋樂(lè)子,喜歡瞧瞧未知的東西,包括這次就闖了幾個(gè)之前沒(méi)接觸的。比如今天的主角——WordPress根據(jù)多個(gè)自定義字段合并篩選數(shù)據(jù)。

ddd

大家都知道根據(jù)多個(gè)字段合并篩選數(shù)據(jù)那是網(wǎng)站制作開發(fā)過(guò)程中最平常不過(guò)的功能了,很多人都會(huì),比如一些商城什么的。就算是自己開發(fā)一個(gè)這樣的功能模塊也是非常簡(jiǎn)單的,是一個(gè)很常規(guī)的工作。基于一些CMS系統(tǒng)來(lái)說(shuō)這樣的功能根本不用做,因?yàn)楝F(xiàn)成的;而就算自己寫一個(gè)這樣的系統(tǒng)也是很簡(jiǎn)單的。但如果對(duì)WordPress不熟悉,要完成這個(gè)并不是一件太容易的事兒;因?yàn)榍疤崾遣荒芷茐乃慕Y(jié)構(gòu),而且得根據(jù)他的架構(gòu)思想來(lái)做。否則你可能功能寫出來(lái)了,但效率很低下;除非你比這個(gè)原作者更熟悉這個(gè)結(jié)構(gòu)、有更牛逼的數(shù)據(jù)庫(kù)知識(shí)。

下面就進(jìn)入正題,其實(shí)這個(gè)我們首先需要用到postmeta這張數(shù)據(jù)表,這個(gè)數(shù)據(jù)表有meta_id,post_id,meta_keymeta_value四個(gè)字段,其中meta_id為記錄id,為自增;post_id為相應(yīng)的文章ID(其實(shí)實(shí)際上包含文章、頁(yè)面、附件等,因?yàn)檫@些都保存在post表中),而后兩者分別為鍵名稱和鍵值。如果單純這張表,確實(shí)很簡(jiǎn)單,清晰明了;但就是這張表,就是給我們來(lái)擴(kuò)充文章、附件、頁(yè)面等功能的。

因此我們自然的可以聯(lián)想到來(lái)應(yīng)用它,如果你在考慮做這個(gè)事情,那么你很幸運(yùn),因?yàn)椴恍枰憧从⑽奈臋n(對(duì)于我這樣的英語(yǔ)渣,最痛苦的就是看英文文檔了),就可以在國(guó)內(nèi)各個(gè)博客中發(fā)現(xiàn)一個(gè)非常使用的函數(shù)update_post_meta(),這個(gè)就是向其中插入數(shù)據(jù)的,使用起來(lái)很簡(jiǎn)單;相應(yīng)的還有delete_post_meta()get_post_meta(),分別用于刪除和獲取數(shù)據(jù)的。關(guān)于這些相關(guān)的函數(shù)使用我有時(shí)間會(huì)跟大家分享下。

準(zhǔn)備工作好了,現(xiàn)在我們已經(jīng)可以為我們的內(nèi)容創(chuàng)建自定義字段,并可以保存、讀取、刪除、更新等,也就是說(shuō)我們的這個(gè)列表中的文章可以分別有了類別、材質(zhì)、主題三個(gè)附加的字段,就類似標(biāo)題字段一樣的。那么我們需要做最后一個(gè)主體工程就是來(lái)合并篩選。據(jù)我對(duì)WordPress數(shù)據(jù)結(jié)構(gòu)的了解,如果直接寫自定義的SQL查詢語(yǔ)句來(lái)寫,那么顯然是相對(duì)復(fù)雜而且很可能會(huì)效率很低。于是我就在想這個(gè)強(qiáng)大的程序是不是自己提供了,就聯(lián)想到了WP_Query類之類的東西,結(jié)果翻看文檔發(fā)現(xiàn)其中還真是有我需要的,當(dāng)然此類內(nèi)容在網(wǎng)上比較少,因?yàn)楹苌偃苏垓v這玩意。下面就直接代碼截圖來(lái)給思路了,當(dāng)然到這里了其實(shí)不用貼代碼,對(duì)于懂的人也能知道怎么辦了。

對(duì)于我們上圖能看到的那一部分的選擇區(qū)域代碼就省略了,那一部分很簡(jiǎn)單,其實(shí)就是為了獲取篩選的參數(shù)ID,用于我們輸出數(shù)據(jù)時(shí)的約束條件而已。直接從輸出約束(也就是我們要的多字段篩選)核心的部分來(lái)做處理。首先我們得判斷我們用戶是否選擇了篩選條件,這里有三個(gè)屬性條件,分別是類別、材質(zhì)、主題;那么我們就一一獲取吧(命名是隨便的,有點(diǎn)兒不規(guī)范哈)。

etewt

然后我們就需要用到了我們上面所說(shuō)的WP_Query類,我們我們我們得到的篩選條件傳遞到類當(dāng)中,并實(shí)例化類獲得一個(gè)我們查詢的對(duì)象,然后在把對(duì)象里面的東西取出來(lái)輸出就完成了。如下:

dddxx至此,我們就已經(jīng)實(shí)現(xiàn)了我們最開始所需要的功能了(當(dāng)然上面的合并條件的地方,你可以寫入更多的條件,而且靜態(tài)分類ID=24,實(shí)際應(yīng)用可以改成動(dòng)態(tài),實(shí)際上用$cat就可以了,這里只是為了簡(jiǎn)單明了,直接寫了一個(gè)靜態(tài)值)。而且上面兩張圖已經(jīng)貼出了很詳細(xì)的核心部分的代碼了,幾乎直接抄著就可以用了,當(dāng)然用戶篩選界面就省略了。對(duì)于WP_Query類的詳細(xì)介紹,以后有時(shí)間的時(shí)候跟大家分享下。

到了這里,如果熟悉了以上各個(gè)數(shù)據(jù)結(jié)構(gòu)、內(nèi)置方法及屬性、類等等,那么做起來(lái)就非常簡(jiǎn)單了,比自己寫一個(gè)孤立的同樣的功能的模塊還簡(jiǎn)單,省時(shí)省力,就像拿現(xiàn)成的CMS系統(tǒng)的這樣的模塊使用一樣。因此,還是那句話,沒(méi)有絕對(duì)的難或者容易,再簡(jiǎn)單的只要不會(huì)一樣難,再?gòu)?fù)雜的只要會(huì)了一樣很容易。

當(dāng)然,不管大家是懂技術(shù)的還是不懂技術(shù)的,不管是用過(guò)WordPress的還是沒(méi)有用過(guò)WordPress的,如果大家有這方面的服務(wù)需求,都可以聯(lián)系咱們哦。

 

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請(qǐng)注明出處:[思路+代碼]WordPress實(shí)現(xiàn)根據(jù)多個(gè)自定義字段合并篩選數(shù)據(jù) - 微構(gòu)網(wǎng)絡(luò)
分享:
標(biāo)簽:
海晏县| 类乌齐县| 大荔县| 马龙县| 武山县| 苏尼特左旗| 东方市| 来安县| 防城港市| 德庆县| 石楼县| 芮城县| 将乐县| 茶陵县| 武山县| 嫩江县| 诏安县| 蒙阴县| 巨鹿县| 榆林市| 大悟县| 高阳县| 靖远县| 林芝县| 台东市| 上高县| 北川| 霸州市| 南平市| 文水县| 三明市| 上栗县| 蒙自县| 克东县| 敦化市| 清远市| 西畴县| 罗定市| 荔浦县| 修水县| 祁连县|