勉強したことのメモ

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と別プログラム間でSESSIONが引き継げない

同一サーバ内に自作したプログラムとWordPressを設置しており両者でセッショ ...

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

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

WordPressでテーマの作成

CSSとHTMLコーディングデータがあり、それをWordPressのテーマに反映 ...

WordPressでプラグインの作成方法

WordPressで簡単なニュースを表示させるというプラグインを作成したので、使 ...

WordPressを4.8.2にして不具合

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

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

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

WordPressの管理画面で記事一覧にアイキャッチ画像を表示

WordPressの管理画面で記事一覧にアイキャッチ画像を表示させる方法のメモ。 ...

Advanced Custom Fieldsで記事取得

WordPressでAdvanced Custom Fieldsにて設定した項目 ...

contact form7で送信時に別サーバへデータ送信

contact form7でフォーム送信時に別サーバーでフォーム内容をPOST送 ...