2014-09-22 5 views
0

포드 중 하나에있는 모든 항목을 json으로 내보내는 코드는 다음과 같습니다. 문제는 json 파일에 130 개의 열이 모두 필요하지 않지만 약 20 개만 필요하다는 것입니다. 약 150 개 항목에 대해이 작업이 수행되므로 모든 필드를 인쇄하지 않아 로딩 시간을 절약 할 수 있다고 생각했지만 이것을하는 방법을 모른다. 예를 들어, 포드의 모든 항목에 대해 'title'이라는 열 값만 인쇄하려고합니다. 내 코드는 아래에 첨부되어 있습니다.Wordpress 포드 : json으로 특정 열을 내 보냅니다.

if (0 < $all_companies->total()) { 
    while ($all_companies->fetch()) { 
     $json .= $all_companies->field('title'); 
    } 
    $json = rtrim($json, ","); 
    $json .= '}}'; 
} 
echo $json; 

을하지만 그것은 작동하지 않습니다 또한 코드는 매우 길어 :

<?php 
$pods = pods('name', array('orderby' => 'name asc', 'limit' => -1)); 
$all_companies = $pods->export_data(); 
if (!empty($all_companies)) { 
    die(json_encode($all_companies); 
}else{ 
    die(json_encode(array('error' => 'No cars found.'))); 
} 
?> 

나는이 같은 일을 생각.

답변

0

나는 while 루프 안에 Pods::field()에 전달 된 해당 필드 이름의 foreach를 수행하여 각 항목에 대해 해당 필드의 배열을 만들고 싶다면 20 개의 필드 이름 배열을 만들 수 있습니다. 이처럼 : 또는

$pods = pods('name', array('orderby' => 'name asc', 'limit' => -1)); 
    $fields = array('field_1', 'field_2'); 
    if ($pods->total() > 0) { 
     while ($pods->fetch()) { 
      foreach ($fields as $field) { 
       $json[ $pods->id() ] = $pods->field($field); 
      } 

     } 

     $json = json_encode($json); 

    } 

, 당신은 요청의 본문으로 돌아 필드 목록을 받아 우리 JSON API/pods/<pod> 엔드 포인트를 해킹 할 수있다. 하기가 어렵지 않을 것입니다. 작동하게 만들려면 요청을 제출하십시오.

+0

이것은 $ pods-> id()를 @field로 변경했을 때 작동했습니다! 하지만 while $ pods-> fetch()는 효과가없는 것 같습니다. 내가 $ pods-> total()을 echo 할 때 나는 2의 값을 얻는다. 이것은 내가 쓰는 아이템의 수이다.하지만 에코 $ json이 단지 1 개의 아이템 만 프린트 될 때 : S –

+0

신경 쓰지 마라. 나는 while 루프 안에 프린트하고 있었다. ! 도와 주셔서 감사합니다 :) –