複数のカスタムフィールドを条件にして、かつカスタムフィールドでソート

デザインよりの人には便利っぽいquey_postを

カスタムフィールドを複数検索条件にする場合は
‘meta_query’配列を条件配列に組み込んでごにょごにょすると良いよ

 

	$args = array(
	'post_type'      => '投稿タイプ'
	, 'orderby' => 'meta_value'
	, 'meta_key' => 'ソートさせたいカスタムフィールドのキー'
	, 'order'    => 'ASC'
	, 'meta_query' => array(
		array(	'key'=>'検索条件に入れたいカスタムフィールドのキー1',
			'value'=>'値1',
			'compare'=>'=',
			),
		array(	'key'=>'検索条件に入れたいカスタムフィールドのキー2',
			'value'=>'値2',
			'compare'=>'=',
			),
		'relation'=>'AND'
		)
	);

	query_posts( $args );

compareで、比較演算子を入れて、relationで論理演算子で色々定義する。
巷にはorderbyがうまく動かない旨の報告が上がってるが、v3.31において、
今のところ変なことにはなっていない。
とはいえ、やっぱりテンプレートタグって裏で壮大な処理をしていそうで、
普通にsql投げたほうが良いのかなと思う。

chromeのsession cookie

ブラウザを落としたら、cookieが消える。
そういうcookieの命というか、終了期限というかexpiresはsessionとされるが、
基本的にはexpiresを明示的に設定しなければ、全部expiresがsessionのcookieとなる。

で、IEやらFireFoxでやってみると、cookieをセットしてブラウザ落としたら
ちゃんと削除されてる。(IEなんかは、これはsessionしか生きられないcookieだから、
ってんで、ファイルとしてcookieを残すことすらしない)。

でもって、chromeで検証してたらあら不思議。
ブラウザを落とせど落とせども、sessionのcookieは消えない。

なんだなんだ、とはまっていたら、設定がだめだったようだ。
検証に使用していたChromeでは、ブラウザを起動した際に、中断した箇所から
続けるという設定をしていたのだが、この設定によってsessionという概念は
なくなっており、expires=sessionのcookieは削除されずにすんでいたわけだ。

ただし、
設定] > [詳細設定を表示] > [コンテンツの設定] > [ブラウザを終了するまでローカル データを保存する]
にチェックすると、中断した箇所から続けてもsessionのcookieは消えましたとさ。

めでたし、めでたし