2014-02-19 20 views
0

我有下面的代碼,它不工作,因爲數組沒有按預期響應。我正在WordPress metabox上創建類別選擇,並將其作爲序列化數據存儲在數據庫中,但當使用tax_query來獲取選定類別時,數組在terms字段中將分類失敗。檢查下面的代碼:不在WordPress'tax_query'中分隔類別標識的數組

$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

使用破滅功能,我們得到$cat_query which(73,72)

因此,array($cat_query)將是array(73,72),其在打印時應該是:

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

但是相反,$ cat_query值作爲其最終被打印出來作爲一個單元:

Array ([0] => 73,72) 

這是錯誤的

回答

0

$cat_query是從$categories創建的函數implode。 所以我認爲$categories是一個數組,看起來像一個你想要的:

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

你是正確的,但$類是已序列化的數據和它的值是73和72我已經編輯了問題。好心檢查。 – Peter

+0

我不知道你到底想要什麼,但我假設你想要將內爆數組轉換回來。使用implode函數,它將不同的數組值作爲一個字符串返回。當你使用'array($ cat_query)'時,它只會在數組中插入一個元素。如果你想再次將它們分開使用:'explode(',',$ cat_query)' – Manu