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

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

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

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

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

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

ddd

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

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

因此我們自然的可以聯(lián)想到來應(yīng)用它,如果你在考慮做這個(gè)事情,那么你很幸運(yùn),因?yàn)椴恍枰憧从⑽奈臋n(對(duì)于我這樣的英語渣,最痛苦的就是看英文文檔了),就可以在國內(nèi)各個(gè)博客中發(fā)現(xiàn)一個(gè)非常使用的函數(shù)update_post_meta(),這個(gè)就是向其中插入數(shù)據(jù)的,使用起來很簡單;相應(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)建自定義字段,并可以保存、讀取、刪除、更新等,也就是說我們的這個(gè)列表中的文章可以分別有了類別、材質(zhì)、主題三個(gè)附加的字段,就類似標(biāo)題字段一樣的。那么我們需要做最后一個(gè)主體工程就是來合并篩選。據(jù)我對(duì)WordPress數(shù)據(jù)結(jié)構(gòu)的了解,如果直接寫自定義的SQL查詢語句來寫,那么顯然是相對(duì)復(fù)雜而且很可能會(huì)效率很低。于是我就在想這個(gè)強(qiáng)大的程序是不是自己提供了,就聯(lián)想到了WP_Query類之類的東西,結(jié)果翻看文檔發(fā)現(xiàn)其中還真是有我需要的,當(dāng)然此類內(nèi)容在網(wǎng)上比較少,因?yàn)楹苌偃苏垓v這玩意。下面就直接代碼截圖來給思路了,當(dāng)然到這里了其實(shí)不用貼代碼,對(duì)于懂的人也能知道怎么辦了。

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

etewt

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

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

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

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

 

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

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

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

轉(zhuǎn)載請(qǐng)注明出處:[思路+代碼]WordPress實(shí)現(xiàn)根據(jù)多個(gè)自定義字段合并篩選數(shù)據(jù) - 微構(gòu)網(wǎng)絡(luò)
分享:
標(biāo)簽:
年辖:市辖区| 平南县| 安阳市| 萝北县| 澄迈县| 门源| 溆浦县| 宿迁市| 和林格尔县| 子长县| 大同市| 武威市| 行唐县| 剑川县| 镇安县| 呼和浩特市| 阿坝县| 洞头县| 仁化县| 和顺县| 梁平县| 建水县| 靖边县| 盐亭县| 阜新市| 岳阳市| 双桥区| 东阿县| 永新县| 黄梅县| 沙坪坝区| 苍溪县| 厦门市| 三台县| 苍梧县| 淮安市| 台江县| 白朗县| 社旗县| 云南省| 阳城县|