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

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

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

このページは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は今ひとつ知名度が低いため、
気をつけようと思った次第です。(´・ω・`)

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