勉強したことのメモ

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

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

   

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

  関連記事

WordPressで固定ページに記事一覧を表示させるプラグイン

WordPressで固定ページ編集時にショートコードを書くことで、記事一覧を表示 ...

WordPressを4.8.2にして不具合

WordPressを4.8.2にすると記事の新規追加時にウィジウィグの挙動がおか ...

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

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

WordPressのfunctions.phpの初期設定

WordPressのテーマ作成時にfunctions.phpを書くが、いつも内容 ...

WordPressのカテゴリーベースに関して

WordPressのパーマリンク設定でカテゴリベースを設定したかった。ここは変更 ...

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

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

WordPressで逆アクセスランキングの設置

WordPressに逆アクセスランキングを設置したかった。 ただ、広告が出ないタ ...

WordPressで記事検索時に投稿ID順にならない場合

WordPressでサイト上から記事検索を行った場合、通常であれば投稿IDが新し ...

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

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

WordPressで閲覧者にテーマを変更させるプラグイン

「新規サイトを○○みたいなイメージでWordPressのテーマを見繕って欲しい」 ...