2012-03-15 81 views
0

學到了一個傢伙,Utkarsh Kukreti,這裏http://www.fldtrace.com/wordpress/custom-post-types-numeric-title-orderWordPress的標題數字排序功能

輝煌的解決了這個功能,它適合我的類別也有同樣的標題格式(例如布拉1,布拉2的一個... ),但它與我的其他類別僅使用字母和/或混合數字並不一致。

我的問題是(wp_posts.post_title + 0)是什麼意思?

function orderby_post_title_int($orderby) { 
    return '(wp_posts.post_title+0) ASC'; 
} 

回答

0

該子句(最終)傳遞給MySQL並由其解釋。 wp_posts.post_title是數據庫中的文本字段。加0迫使MySQL嘗試將結果解釋爲數字。

例如,

select '9' + 0; 

返回(數量)9,和

select '12' + 0; 

返回(數)12.如果MySQL被排序的值的文字,它會把12 9之前(按字母順序)。將這些值轉換爲數字後,會根據您的需要進行排序(12之前的9,按數字順序排列)。

注意,MySQL的轉換儘可能多的字符串作爲可能的一個號碼的開頭,所以

select '2abc' + 0; 

回報2,但

select 'abc2' + 0; 

返回0

+0

我得到的,所以當post_title中沒有數字時,它也會返回0。這意味着使用這個功能,什麼都不能訂購。 謝謝你!我想我知道如何解決這個問題。如果值爲0,我將按字母順序排序post_title,如果值大於1,按數字順序排序。基本上使用+ 1.如果我錯了,請糾正錯誤。 順便說一句,如果字符串是'abc 2',間隔數字和字母,返回值會是2對嗎? – Randize 2012-03-15 13:29:57

+0

對不起,我無法進入MySQL會話進行檢查,但我非常確定'abc 2'+ 0會返回0(它試圖從字符串的開頭開始計算)。如果你沒有任何運氣,並且可以用一些示例標題解釋你的訂單(可能是最好的單獨問題),我相信有人能夠提供幫助。 – Hobo 2012-03-16 18:14:39