【发布时间】:2014-02-19 04:14:08
【问题描述】:
我有以下代码,但它无法正常工作,因为数组没有按预期响应。我在 WordPress 元框上创建类别选择并作为序列化数据存储在数据库中,但是当使用 tax_query 获取所选类别时,数组在 terms 字段中分隔类别 ID 失败。检查下面的代码:
$selected_categories = get_post_meta($post->ID, $prefix . 'services_category', true);
if ($selected_categories != '') {
$categories = unserialize(get_post_custom($post->ID)[$prefix . 'services_category'][0]);
}
$cat_query = '';
$cat_query = ( !empty($categories) ) ? implode(',', $categories) : '';
if ($cat_query != '') {
$tax_query = array(
array(
'taxonomy' => 'services_cat',
'field' => 'id',
'terms' => array($cat_query),
),
);
} else { $tax_query = null; }
$services_paged = is_front_page() ? get_query_var( 'page' ) : get_query_var( 'paged' );
query_posts(array(
'post_type' => 'mt-services',
'posts_per_page' => $services,
'paged' => $services_paged,
'tax_query' => $tax_query
));
这是我的问题所在:我正在尝试从 metabox 中回显选定的类别,但不幸的是它们都作为一个项目回显。
'terms' => array($cat_query)
结果如下:
print_r(array($cat_query)
给我
Array ( [0] => 73,72 )
而不是
Array ( [0] => 73, [1] => 72 )
详细解释
$categories 的值为 73 和 72。
使用 implode 函数我们得到 $cat_query which 是 (73,72)。
因此array($cat_query) 将是array(73,72),打印出来时应该是:
Array ( [0] => 73, [1] => 72 )
但是,$cat_query 值被视为一个单元,最终被打印为:
Array ( [0] => 73,72 )
错了
【问题讨论】: