勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Advanced Custom Fieldsでチェックボックスの記事を取得

   2024/02/20  WordPress CMS

Advanced Custom Fieldsでチェックボックス設定しているカスタムフィールドがあり、チェックされている値ごとに記事を取得したかった。以前対応したような形でいけるかと思いきやそうでもなかったので対応方法をメモ。

 

設定内容

チェックボックスの中身は以下を想定し、フィールド名は「テストチェックボックス」とする。

  • 1 : 赤
  • 2 : 青
  • 3 : 緑

 

MySQLの保存内容

以下のようなシリアライズされた形で保存されていた。

a:2:{i:0;s:1:"2";i:1;s:1:"3";}

 

取得方法

前提としてチェックボックスの値はGETクエリにてtest=値の形で指定するものとする。以下のような形で取得。

<?php
$paged = (int) get_query_var('paged');
$args = array(
    'posts_per_page' => 10,
    'paged' => $paged,
    'orderby' => 'post_date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish', 
    'post__not_in' => array( get_the_ID() ), 
);

if( $_GET['genre'] ){
    $args['meta_query'] = array(
        array(
            'compare'=>'LIKE', //LIKE検索指定
            'key' => 'テストチェックボックス', 
            'value' => '1:"' . $_GET['test'] . '"'
        ),
    );
}
$the_query = new WP_Query($args);
?>

LIKE検索でシリアライズされている内容から無理やり抽出する形になる。今回は値を数値で入れていたので助かったが、文字列の場合は検索ができない場合も出てきそう。

 

まとめ

Advanced Custom Fieldsでチェックボックスの記事を取得する場合はLIKE検索で抽出する。値部分は文字列で設定しておいた方が良い。

 - WordPress CMS

  関連記事

Advanced Custom FieldsでGoogleMapの使用する方法

Advanced Custom FieldsでGoogleMapを使用したかった ...

WordPressにてAdvanced Custom Fieldsを用いて連載(シリーズ)記事機能を実装する方法

先日「Series」プラグインで連載(シリーズ)記事機能の実装方法をメモしたが、 ...

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

WordPressにてAdvanced Custom Fieldsで設定したカス ...

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

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

WordPressでカスタムフィールドとCSVファイル投稿する方法

WordPressでカスタムフィールド設定している環境に、CSVファイルアップロ ...