WP クエリで表示するページのフィルタリングで問題が発生しました。
ページをフィルタリングするために、ACF(Advanced Custom Fieldsプラグイン - ただし、WPカスタムフィールドと同じように機能するので問題ありません)パラメータを使用して、カスタムフィールドのCodex WPクエリリファレンスを使用します。
「Multiple Custom Field Handling」の段落で、Codex は 2 つの条件を持つ例を取得しました。OR または AND 関係を使用できます。3番目の条件(配列)が得られるまで、私は両方のために働きます。
彼らは例を使用します:
'relation' => 'OR',
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'NOT LIKE'
),
array(
'key' => 'price',
'value' => array( 20, 100 ),
'type' => 'numeric',
'compare' => 'BETWEEN'
)
アレイは 2 つしかありません。3番目に置くと、何も表示されません。デバッグ モードでは、次のエラーが表示されます。
WordPress database error: [Lost connection to MySQL server during query]
AND を使用すると機能しますが、OR を使用する必要があります。残念ながら、MySQL が切断されます。WP と同じクエリを phpMySQL に問い合わせてみました。それは問題を引き起こします-phpMyAdminは同じことを言います:
Lost connection
何か案が?たぶん、フィルタリングに別のアプローチを試す必要がありますか?(多分私は分類法を使用する必要がありますか?)
私が使用するコードは次のとおりです。
$query_array = array('relation' => 'OR');
array_push($query_array,
array(
'key' => 'filter1',
'value' => 'value1',
'compare' => 'LIKE'
),
array(
'key' => 'filter1',
'value' => 'value2',
'compare' => 'LIKE'
),
array(
'key' => 'filter1',
'value' => 'value3',
'compare' => 'LIKE'
)
);
$args = array(
'order' => $order_array,
'meta_key' => $meta_key,
'orderby' => $orderby,
'post_type' => 'page',
'paged' => $paged,
'post__in' => $postIDs,
'posts_per_page' => 12,
'paged' => get_query_var('paged'),
'meta_query' => $query_array
);
query_posts($args);
?>
(もちろん $args の変数は設定されています)
なんで使えないのかわからない
'compare' => '='
しかし、おそらくそれが私が使用できない理由です:
$query_array = array('relation' => 'OR');
array_push($query_array,
array(
'key' => 'filter1',
'value' => array('value1', 'value2', 'value3'),
'compare' => 'IN'
)
);