カスタムフィールドの値が小数点だったときのソート方法


TAKAHIRO YAMADA
@rural_web
カスタムフィールドの値が小数点だったときのソート方法

検索結果ページで、カスタムフィールドの値が「0.5」「10.5」のような小数点の値でソートしたかったのに、なんだかうまく動かなかったのでその備忘録。

状況

下記のように、プルダウン選択で並び替え(ソート)をしたかった。

<form name="sortbox">
	<select class="sort-select" name="sort-select">
		<option value="">選択してください</option>
		<option value="<?php echo add_query_arg( array('order' => 'asc', 'orderby' => 'meta_value_num', 'meta_key' => 'custom_field1') ); ?>">数値が低い順</option>
		<option value="<?php echo add_query_arg( array('order' => 'desc', 'orderby' => 'meta_value_num', 'meta_key' => 'custom_field2') ); ?>">数値が高い順</option>
	</select>
</form>

数値式なので、orderbyにmeta_value_numで良いのかと思ってたが、思ったように並び変わらない。

そこで下記をfunciton.phpに記述したら動いた。

function add_meta_query_vars( $public_query_vars ) {
	$public_query_vars[] = 'meta_key';
	$public_query_vars[] = 'meta_value';
	return $public_query_vars;
}
add_filter( 'query_vars', 'add_meta_query_vars' );

プルダウン選択で自動更新

プルダウン選択後にちゃんと遷移してくれたほうが良い。JS記述で思った通りに動いた。

jsファイル

jQuery('select[name=sort-select]').change(function() {
  if (jQuery(this).val() != '') {
    window.location.href = jQuery(this).val();
  }
});

1行目の[name=※※※]の部分は、プルダウンにするselectタグのname名に合わせる。

<select class="sort-select" name="sort-select">
コメントを表示 (0)

Comments

CAPTCHA


関連記事

WordPress

カスタム投稿タイプを導入する際のTIPS

WordPressにカスタム投稿やカスタムフィールド、カスタムタクソノミーを導入する際に検索したあれこれ。 function.phpで追加 プラグインを利用せず、カスタム投稿・カスタムタクソノミーをそ […]

by TAKAHIRO YAMADA
WordPress

プラグイン「Toolset Types」の使い方まとめ

Toolset Typesは、Wordpressでカスタム投稿タイプ、カスタムタクソノミー、カスタムフィールドを簡単に追加できるプラグイン。利用する機会があったので、書き残し。 2018年から有料版に […]

by TAKAHIRO YAMADA