ど素人から毛を生やす。<延>

カスタムフィールドで記事のソートが失敗するのは「orderby」を「meta_value」にしているからかも

Web > WordPress 2016年1月13日(最終更新:8年前)

2016年1月13日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。

カスタム投稿タイプの一覧で、並び順をカスタムフィールドで設定。WP外でのPHPでもDBの値を使用。
後半は今回は無関係なのですが、ともかくカスタムフィールドの値で記事の並び順を決めたい。


$args = array(
	'orderby'  => 'meta_value',
	'order'    => 'DESC', //降順。昇順は'ASC'
	'meta_key' => 'カスタムフィールドの名前'
    );
get_posts($args);

このようにしましたが、これではダメでした。

カスフィーは数値を入力したので、降順、つまり
10→5→3
のように並んで欲しいのですが、実際は、
5→3→10
になってしまいました。

meta_valueはカスフィの辞書的なソートを行う指示なのです。
では、数値で並べるにはどうすれば良いか。

meta_valueをmeta_value_numにすれば良いです。


$args = array(
	'orderby'  => 'meta_value_num',
	'order'    => 'DESC', //降順。昇順は'ASC'
	'meta_key' => 'カスタムフィールドの名前'
    );
get_posts($args);

こういうこと。

meta_valueに比べてmeta_value_numは今ひとつ知名度が低いため、
気をつけようと思った次第です。(´・ω・`)

この記事は役に立ちましたか?
  • (`・ω・´) 役に立った (1)
  • (・∀・) 参考になった (2)
  • _(:3」∠)_ 面白かった (2)