勉強したことのメモ

webプログラマが勉強したことのメモ。

WordPressにてACFで設定したカスタムフィールドの値を元に記事を並べ替える方法

   

WordPressにてAdvanced Custom Fieldsで設定したカスタムフィールドの値を元に記事のソートしたい。具体的には記事毎にYoutubeのようにGood / Badボタンがあり、Good / Badの多い順で記事をソートしたかった。また、Good / Badの数値が同じ場合は投稿日時でソートしたい。以下に対応方法をメモ。

 

WP_Queryの場合

<?php
$args = array(
    'post_type' => 'post', 
    'paged' => $paged,
    'posts_per_page' =>10,
    'meta_key' => 'good', //ACFで設定するフィールド名を指定
    'orderby' => array(
        'meta_value_num' => 'DESC', //Good順でソート
        'date' => 'DESC', //投稿日時でソート
    ),
);
$my_query = new WP_Query($args);
?>

meta_value_numと指定することでカスタムフィールドを数値としてソートしてくれる。meta_valueだと文字列としてソートされるので注意。

 

$query->setの場合

$query->set('post_type', 'post' );
$query->set('post_status', 'publish');
$metaquery[] = array(
    'meta1' => array(
        'key' => 'good', //ACFで設定するフィールド名を指定
        'type' => 'NUMERIC'
    ),
);
$query->set('meta_query',$metaquery);
$query->set( 'order', 'DESC' );
$query->set('orderby',
    array(
        'meta1' => 'DESC', //Good順にソート
        'date' => 'DESC', //投稿日時でソート
    )
);

 

所感

WP_Queryの方は直感的に分かりやすいが$query->setの方はイマイチよく分からりづらい……。

 - WordPress, CMS

  関連記事

WordPressのxmlrpc.phpへの攻撃

サーバーの死活監視をしているシステムから、1つのサイトが落ちているとアラートがき ...

WordPressのcron設定で負荷対策

WordPressのcron設定(wp-cron.php)を変更することで負荷が ...

WordPress記事本文の文字検索と置換方法

WordPressの記事本文内にhogeという文字列が含まれていた場合、hoge ...

WordPressのユーザー画像とプロフィール

WordPressでユーザー毎に画像とプロフィール部分にHTMLタグを登録したか ...

WordPressにてPHPのAPCuを使用して高速化を図る方法

先日本サイトのサーバにAPCuを導入した。しかしながら所感にも書いたとおりAPC ...

WordPressで任意のクエリをページ内で出力する方法

WordPressの固定ページ内でuidという任意のGETクエリを取得して、記事 ...

WordPressで記事毎に設定した広告を表示させる方法

WordPressでGoogleアドセンスのようなクリック広告ではなく、商品を指 ...

WordPress5のエディタを元に戻す方法

WordPress5にアップデートしたところ記事投稿ページのエディタが非常に使い ...

WordPressでNo URL was~というエラー

WordPressでmp4ファイルをアップロードして記事に埋め込んだものの、記事 ...

WordPressにてフッターへ出現する笑顔マーク(smiley)を見えなくする方法

■やりたい事 WordPressにて左下へ勝手に出現する笑顔マーク(smiley ...