2014-09-22 1 views
0

J'ai le code suivant pour exporter tous les éléments d'un de mes pods vers json. La chose est que je n'ai pas besoin de toutes les 130 colonnes du fichier json, mais seulement environ 20. Comme cela sera fait pour environ 150 articles, j'ai pensé que je pourrais économiser du temps de chargement en n'imprimant pas tous les champs, mais je fais Je ne sais pas comment faire ça. Par exemple, je veux seulement imprimer la valeur de la colonne nommée 'title' pour tous les éléments du module. Mon code est joint ci-dessous.Pods Wordpress: Exportation de colonnes spécifiques vers 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.'))); 
} 
?> 

je pensais faire quelque chose comme ceci:

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

Mais il ne fonctionne pas et aussi le code devient très long.

Répondre

0

Je créerais un tableau des noms des vingt champs que vous souhaitez puis créer un tableau de ces champs pour chaque élément, en faisant un foreach de ces noms de champs passés à Pods::field() dans la boucle while. Comme ceci:

$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); 

    } 

Sinon, vous pouvez pirater le point final de notre /pods/<pod>JSON API d'accepter une liste de champs pour revenir comme le corps de la demande. Ne serait pas difficile à faire, assurez-vous de soumettre une demande de tirage si vous le faites fonctionner.

+0

Cela a fonctionné quand j'ai changé $ pods-> id() juste @field! Mais le temps $ pods-> fetch() ne semble pas fonctionner. Quand je fais écho à $ pods-> total(), j'obtiens 2, ce qui est le nombre d'items que j'écris, mais quand je ne fais qu'éco $ json, seulement 1 article est imprimé: S –

+0

Nevermind, je l'imprimais dans la boucle while ! Merci pour l'aide :) –

Questions connexes