2011-03-24 63 views
1

我有一個帖子的頁面的查詢。由自定義字段包括即使爲空的訂單 - wordpress

它返回基於自定義帖子類型和自定義字段值的結果。現在我添加了基於另一個自定義字段排序結果的功能。

$loop = new WP_Query(array ('post_type' => 'new', 'orderby' => 'meta_value_num', 'meta_key' => 'over-length', 'meta_query' => array(array('key' => 'over-make', 'value' => 'Doral', 'compare' => 'LIKE')))); 

我遇到了一點問題。我通過一個名爲「over-length」的自定義字段來排序結果,但似乎如果帖子沒有包含「over-length」的值,它將被排除在結果之外。

我想知道如何更改我的代碼,以便它包含的帖子沒有orderby的值。

也只是想到了一個解決方法,但不知道該怎麼做。我正在使用名爲「更多字段」的插件來創建我的自定義字段。檢查「超長」字段是否爲空並將其設置爲0會更容易嗎?如果是的話,我該如何去做這件事。

更新

我已經研究過這一問題的遠一點。看起來,如果沒有賦予'over-length'值,則自定義字段不會添加到數據庫中的wp_postmeta。如果我給一個帖子一個超長的值,然後返回並刪除它,實際上包含結果在我的查詢中,因爲該字段仍然存在於數據庫中。那麼如何讓這個自定義字段被輸入到數據庫中,如果它有值或不是?

+0

你能確認沒有meta_value'over-length'的帖子被排除嗎?我會說,查詢會排除沒有meta_key'超長'的帖子,但如果他們有沒有價值的字段將包括他們。 – AJJ 2011-03-24 16:33:25

+0

你說得對。所以如何將meta_key添加到數據庫中,如果該字段留空。 – Adam 2011-03-24 17:29:09

+1

如果meta_key用於排序,並且您的帖子中此值留空,那麼您打算如何將它們包含在排序中?您可以在提到的查詢之後運行第二個查詢,只包含沒有meta_key的帖子嗎? – ckaufman 2011-03-24 18:23:03

回答

0

關於你的最後一個請求 - 一種方式來對哪怕是空白的所有帖子添加meta_key(自定義字段):

我經常使用的插件Custom Fields Template對於這種事情。它類似於你正在使用的那個(更多的領域),但是它給你很多玩這些領域的可能性,對於這種情況最重要的是,你可以調整隱藏的領域和默認值。你也許可以設置一個默認值=''(空格),如果留空即可插入該字段。或者,稍加修改,修改插件代碼,將所有字段插入到數據庫中,而不檢查數值是否爲空。在CustomFieldsTemplate的情況下,它不應該很難做到。