2012-03-15 75 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