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

WordPress按照文章自定義字段進行排序的內部調用方法

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

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

因為二次開發(fā),因此我們時長會碰到各種各樣的需求,比如說一個個人博客,他需要對他的博客文章按照瀏覽數(shù)進行排序;再或者,一個基于WordPress開發(fā)的購物網站,需要對商品按照評分來排序(商品采用posts表改造,只是post_type的值另外指定的,這個功能需要另外開發(fā),這里先不說)。

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

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

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

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

下面來舉一個例子,按照文章閱讀數(shù)調取閱讀最多的10篇文章,當然閱讀數(shù)WordPress默認情況下也是沒有的,需要另外開發(fā)相應功能,開發(fā)過程網上一大把,自己寫也很簡單。實際上query_posts()的orderby的值是支持自定義字段的,如果給上meta_value_num即可,當然同時要定義meta_key這個參數(shù),比如在開發(fā)閱讀數(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();

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

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

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

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

我們在微信上24小時期待你的聲音

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

轉載請注明出處:WordPress按照文章自定義字段進行排序的內部調用方法 - 微構網絡
分享:
满城县| 昌都县| 正阳县| 南部县| 来宾市| 桂东县| 兴国县| 井冈山市| 仁布县| 策勒县| 台湾省| 大理市| 宝鸡市| 鄂托克前旗| 三台县| 龙州县| 大姚县| 利辛县| 哈密市| 珲春市| 衡山县| 屏东市| 灵石县| 翁牛特旗| 安西县| 环江| 屏山县| 大冶市| 安吉县| 芜湖县| 菏泽市| 安陆市| 岳池县| 吕梁市| 右玉县| 台州市| 九龙城区| 江华| 陵水| 贡山| 石台县|