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

WordPress按照文章自定義字段進(jìn)行排序的內(nèi)部調(diào)用方法

2016-10-09 22:48 欄目:技術(shù)開發(fā) 查看(14196)

WordPress雖然是一款博客程序,但實(shí)際上有很多企業(yè)網(wǎng)站依然使用它,其中包括很多著名的大型公司官網(wǎng)都是基于WordPress創(chuàng)建的。而事實(shí)上,除了博客和企業(yè)官網(wǎng),它還可以通過二次開發(fā),開發(fā)成購物商城、資訊門戶等邏輯更為復(fù)雜的web應(yīng)用。當(dāng)然有人會(huì)說在不經(jīng)過深度優(yōu)化前提下,WordPress的性能是一個(gè)問題,但我想說的是,對(duì)于絕大多數(shù)企業(yè)官網(wǎng)也好,還是其他應(yīng)用也好,它的性能問題不是問題,因?yàn)槟愕倪\(yùn)營如果能遇到真正的性能問題,說明你的運(yùn)營已經(jīng)非常成功了(當(dāng)然指的是中小網(wǎng)站)。

因?yàn)槎伍_發(fā),因此我們時(shí)長會(huì)碰到各種各樣的需求,比如說一個(gè)個(gè)人博客,他需要對(duì)他的博客文章按照瀏覽數(shù)進(jìn)行排序;再或者,一個(gè)基于WordPress開發(fā)的購物網(wǎng)站,需要對(duì)商品按照評(píng)分來排序(商品采用posts表改造,只是post_type的值另外指定的,這個(gè)功能需要另外開發(fā),這里先不說)。

簡單地來說,這樣的需求都可以總結(jié)為:按照文章自定義字段進(jìn)行排序。

誠然,這是再簡單不過的東西了,無非就是select的了,一句sql就能搞定,而且WordPress有內(nèi)置的數(shù)據(jù)庫操作方法(如$wpdb對(duì)象)。但如果熟悉這個(gè)程序的都知道,實(shí)際上它的數(shù)據(jù)結(jié)構(gòu)的范式是比較低的,三大主要內(nèi)容post、comment以及users實(shí)際上一共有6張表,各自分別有一個(gè)主表和一個(gè)存儲(chǔ)meta信息的數(shù)據(jù)表。

實(shí)際上這個(gè)問題,在一般情況下(是指沒有特殊應(yīng)用需求場景下),根本不需要自己自己重新用$wpdb對(duì)象來對(duì)數(shù)據(jù)庫進(jìn)行操作。而使用非常強(qiáng)大也非常常用的query_posts()方法即可,這個(gè)方法的說明在國內(nèi)網(wǎng)站上比比皆是,但我覺得大部分都沒講透徹,比如現(xiàn)在說的這個(gè)需求很多文章就沒講。

在國內(nèi)很多文章中,也寫到了query_posts()參數(shù)中有orderby和order,但其中orderby主要還是介紹按照指定的某幾個(gè)字段(主要是posts主表中的字段)進(jìn)行排序的。而關(guān)于自定義字段的排序很多都沒有講到,實(shí)際上是可以按照自定義字段排序的。

下面來舉一個(gè)例子,按照文章閱讀數(shù)調(diào)取閱讀最多的10篇文章,當(dāng)然閱讀數(shù)WordPress默認(rèn)情況下也是沒有的,需要另外開發(fā)相應(yīng)功能,開發(fā)過程網(wǎng)上一大把,自己寫也很簡單。實(shí)際上query_posts()的orderby的值是支持自定義字段的,如果給上meta_value_num即可,當(dāng)然同時(shí)要定義meta_key這個(gè)參數(shù),比如在開發(fā)閱讀數(shù)的時(shí)候meta_key的值是views,那么以上需求的核心代碼就是如下了:

$args=array(
     'meta_key' => 'views',
     'orderby' => 'meta_value_num',
     'posts_per_page'=>10,
     'order' => 'DESC'
);
query_posts($args);  while (have_posts()) : the_post();
//輸出代碼段,如帶上HTML代碼
endwhile;wp_reset_query();

當(dāng)然最好的理解就是直接看官方文檔,文檔地址為:

https://developer.wordpress.org/reference/functions/query_posts/。

最后還有更好準(zhǔn)確的就是去閱讀源代碼吧,源碼位于wp-includes/query.php中。

與我們的項(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按照文章自定義字段進(jìn)行排序的內(nèi)部調(diào)用方法 - 微構(gòu)網(wǎng)絡(luò)
分享:
標(biāo)簽:
福州市| 本溪| 铜川市| 万荣县| 阿荣旗| 马龙县| 宜城市| 平山县| 华亭县| 中卫市| 焉耆| 浦城县| 江陵县| 白沙| 临西县| 大竹县| 普宁市| 东阿县| 伊宁县| 清流县| 甘孜县| 无极县| 建昌县| 锡林郭勒盟| 洪江市| 谢通门县| 和静县| 武功县| 呼伦贝尔市| 宜章县| 望城县| 彭山县| 甘谷县| 广水市| 长武县| 新野县| 桦川县| 滁州市| 邵阳市| 原阳县| 青海省|