2012-03-15 4 views
0

は男、Utkarsh Kukreti、ここhttp://www.fldtrace.com/wordpress/custom-post-types-numeric-title-orderWordpressのタイトル数値ソート機能

ブリリアントソリューションからこの機能を学んだ、それは同じタイトルのフォーマット(例えばのBla 1、Blaの2が含まれている私のカテゴリの1のために働きます... )、それだけでアルファベットやミックスナンバーで他のカテゴリとうまく動作しませんでした。

私の質問はここ(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を追加すると、結果を数値として解釈しようとします。例えば

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として返されます。つまり、この機能では何も注文することはできません。 ありがとうございました!私はこれを解決する方法を知っていると思う。 post_titleのソートは、値が0の場合はアルファベット順に、値が1以上の場合は数値順にソートします。基本的に+ 1を使用します。私が間違っている場合、私を修正してください。文字列が数字と文字の間隔、「ABC 2」であればところで 、戻り値は右2のでしょうか? – Randize

+0

申し訳ありませんが、私はチェックするMySQLセッションには到着することができませんが、私はかなり 'abc 2' + 0は0(文字列の先頭から評価しようとします)を返すだろうと確信しています。あなたが運がないと、いくつかの例題のタイトル(おそらく最高の別の質問として)の後にあなたがしている順序を説明することができます私は誰かが助けることができると確信しています。 – Hobo

関連する問題