【发布时间】:2014-04-29 07:39:37
【问题描述】:
我遇到了过滤页面以显示在 WP 查询中的问题。
我使用 Codex WP query reference for custom fields 和 ACF(高级自定义字段插件 - 但没关系,因为它与 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'
)
);
【问题讨论】:
-
高级自定义字段是人人皆知的!它生成如下元值:a:3:{i:0;s:10:"value1";i:1;s:11:"value2";i:2;s:15:"value3";} 所以现在我需要像 LIKE 一样制作 IN,但要使用 Array。现在 IN 在像 '=' 这样的数组中工作。
标签: filtering custom-fields mysqlconnection wordpress