我遇到了过滤页面以显示在 WP 查询中的问题。
我对带有 ACF(高级自定义字段插件 - 但没关系,因为它与 WP 自定义字段的工作原理相同)参数的自定义字段使用 Codex WP 查询参考来过滤页面。
在“多个自定义字段处理”段落中,Codex 获得了一个具有 2 个条件的示例。我们可以使用 OR 或 AND 关系。我为这两个工作,直到你有第三个条件(数组)。
他们使用示例:
'relation' => 'OR',
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'NOT LIKE'
),
array(
'key' => 'price',
'value' => array( 20, 100 ),
'type' => 'numeric',
'compare' => 'BETWEEN'
)
它只有 2 个数组。当我把第三,没有显示。在调试模式下,我可以看到一个错误:
WordPress database error: [Lost connection to MySQL server during query]
当我使用 AND 时,它可以工作,但我必须使用 OR。不幸的是,它使 MySQL 断开连接。我尝试向 phpMySQL 询问 WP 所做的相同查询。它引起了问题 - 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'
)
);