Meta_compareは、予想通り整数の代わりに値を文字列として扱っているようです
-
16-10-2019 - |
質問
Meta_compareを使用しようとしています コーデックスで示唆されているように:
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');
これが私のコードです:
global $wp_query;
query_posts(
array_merge(
array(
'category__and' => $mycatsarray,
'meta_key' => 'price',
'meta_compare' => '>=',
'meta_value' => 8500000,
'orderby' => meta_value_num,
'order'=>DESC
),
$wp_query->query
)
);
array_mergeを使用して、元のクエリを保持しています。したがって、Meta_compareとMeta_Valueに推奨される構文( '&name = value')をどのように使用するかを理解できませんでした。とにかく、私のコードでは、Meta_Valueは文字列のように扱われ、予想どおり整数ではないようです。
これは、カスタム投稿からの典型的な価格カスタムフィールドの例です。
- 8500000
- 600
- 15000
- 900
- 750
- 9000000
文字列の問題でない場合、WordPressが次のようにこれらのカスタムフィールドを注文している(DESC)である可能性があります。
- 9000000
- 900
- 8500000
- 750
- 600
- 15000
次のように注文(DESC)を注文してほしいと思います。
- 9000000
- 8500000
- 15000
- 900
- 750
- 600
ここで何か間違ったことをしていますか?
解決
この質問と私の答えを見てください query_posts-> meta_compare /を使用して、メタ値が小さいか大きいか、等しいかを使用してください。
基本的にメタ比較のために値は常に文字列として扱われます。なぜなら、それはそのように渡されるため $wpdb->prepare()
方法。
所属していません wordpress.stackexchange