2011-08-31 26 views
0

我的客戶有一個網站列出不同的帆船服務。這些服務都有不同程度的訂閱:WordPress的 - 根據自定義字段的值和按字母順序排列帖子

  • 免費
  • 高級
  • 全部

在後端,我一直在使用先進的自定義字段(這很好地工作作爲建立一些自定義字段正常的WP自定義字段)。該服務的自定義字段被稱爲「subscription_level」,它是一個包含上述選項的下拉列表。

我想要實現的是按照訂閱級別和按字母順序顯示帖子。首先,您將擁有按標題排序的所有「完整」服務,然後是「高級」,然後是「免費」服務。

像:

----全部---

全面服務A

全面服務B

全面服務C

----高級 - -

高級服務A

高級服務B

高級服務C

---- ---免

免費服務A

免費服務B

免費服務C

理想情況下,這也應該有分頁,但如果這是不可能的,這不是工作的結束LD。

我通過查看Codex指令嘗試了幾個自定義選擇查詢,但運氣不佳。我的問題是我需要兩種「orderby」方式?根據我的自定義字段「subscription_level」的meta_value劃分帖子,同時按title排序每個級別的訂閱......我似乎無法找到實現此目的的方法。

任何想法指向我在正確的方向將是真棒!

在此先感謝

回答

0

希望我理解這個問題:

  • 你有一個post_type「服務」(或這實際上是你的標準的職位)
  • 每個服務都有一個訂閱級別例如存儲在自定義字段中的「免費」,「高級」或「全部」

因此,首先要做的是將帖子分類到這些級別。

之後,在這些級別內,帖子應根據其標題(或其他)進行排序。

我不確定使用一個自定義SQL查詢很容易實現這一點。它想這將是這樣的:

SELECT * FROM wp_posts,wp_postmeta.meta_value INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_posts.post_status='publish' AND wp_postmeta.meta_key = "service" ORDER BY wp_postmeta.meta_value, wp_posts.post_title, ASC 

但是,如果這得到複雜的,你可以選擇另一種方式來實現這一目標。收集所有「全面服務」帖子的ID,所有「高級服務」帖子的ID和所有「免費服務」帖子的ID,f.e.

SELECT wp_posts.post_ID FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_postmeta.meta_key = "service" and wp_postmeta.meta_value="premium" 

(每一種服務都這樣做)

之後,你在那裏您訂購的標題或新值採集的帖子運行與「posts_in'陣列或其他自定義SQL查詢WP_QUERY。

根據什麼樣的,你要使用分頁的,有你如何能以簡單的方式整合自己的自定義分頁博客文章:

http://www.blackbam.at/blackbams-blog/2011/07/18/implementing-a-simple-and-flexible-paging-algorithm-using-php/

希望這有助於。

相關問題