2015-05-11 72 views
0

我試圖從Wordpress查詢中提取json訂閱源。我需要將JSON格式化[{「id」:「1」,「title」:「title」},{「id」:「2」,「title」:「title2」}]控制json訂閱源的輸出

json_encode函數沒有拉出這種特定的格式:項目不用逗號分隔,我也錯過了最初和最後[]

我讓這個代碼迴應那些缺少的元素,這很好,但最終的逗號,因爲的回聲使腳本讀取失敗。

<?php 
$args = array(
    'post_type' => 'location', 
    'posts_per_page' => -1 
); 

$locations = new WP_Query($args); 

    if($locations -> have_posts()): 
     echo '['; 
     while ($locations->have_posts()) : $locations->the_post(); 
     $coords = get_field('coordinates'); 
     $pid = get_the_ID(); 
     $json["id"] = $pid; 
     $json["name"] = get_the_title(); 
     $json["lat"] = $coords['lat']; 
     $json["lng"] = $coords['lng']; 
     $json["address"] = get_field('address'); 
     $json["address2"] = get_field('address_2'); 
     $json["city"] = get_field('city'); 
     $json["state"] = get_field('state'); 
     $json["postal"] = get_field('zip_code'); 
     $json["phone"] = get_field('office_phone'); 
     $json["fax"] = get_field('office_fax'); 
     $json["web"] = apply_filters('the_permalink', get_permalink());  
     echo json_encode($json); 
     echo ','; 
    endwhile; 
     echo ']'; 
    endif; 

?> 

我知道呼應這些元素是不是做了正確的方式,我做錯事的編碼,這就是爲什麼它拉出沒有正確的格式。

我一直在研究幾天,我無法找到一種方法來創建json_encode回顯,並同時控制它將顯示從wordpress查詢字段。

我很欣賞任何解決方案/領導來解決這個問題。

+0

錯誤的輸出有什麼問題? - 使用一個累積輸出數組,並通過'$ result [] = $ json;'附加單個字符串,然後只對最終的'$ result'數組進行json_encode。 – mario

回答

2

你在循環中加錯了。你想要做的是創建一個數組,並將該數組呈現爲json。

if($locations -> have_posts()): 
    $data = array(); 
    while ($locations->have_posts()) : $locations->the_post(); 

    // add the location stuff to the $data array 
    $data[] = array(
     'id' => $pid, 
     'name' => get_the_title(), 
     // etc.... 
    ); 

    endwhile; 
// present your json 
echo json_encode($data); 

endif; 
+0

魅力......非常感謝! – Jaypee