我有以下代码并且它无法正常工作,因为数组没有按预期响应。我在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
));
这就是我的问题所在:我正在尝试从元数据中回显选定的类别,但不幸的是,它们都作为一个项目回应。
'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 )
这是错误的
答案 0 :(得分:0)
$cat_query
是使用函数implode从$categories
创建的。
所以我假设$categories
是一个看起来像你想要的数组:
Array ( [0] => 73, [1] => 72 )