数组不分隔WordPress的'tax_query'中的类别ID

时间:2014-02-19 04:14:08

标签: php arrays wordpress

我有以下代码并且它无法正常工作,因为数组没有按预期响应。我在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 )

这是错误的

1 个答案:

答案 0 :(得分:0)

$cat_query是使用函数implode从$categories创建的。 所以我假设$categories是一个看起来像你想要的数组:

Array ( [0] => 73, [1] => 72 )