我有以下代码将我的一个pod中的所有项目导出到json。问题是我不需要json文件中的所有130列,但只需要大约20个。因为这将完成大约150个项目,我认为我可以通过不打印所有字段来节省一些加载时间,但我做不知道该怎么做。例如,我只想打印pod中所有项目的名为“title”的列值。我的代码附在下面。
<?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.')));
}
?>
我想过做这样的事情:
if ( 0 < $all_companies->total() ) {
while ($all_companies->fetch()) {
$json .= $all_companies->field('title');
}
$json = rtrim($json, ",");
$json .= '}}';
}
echo $json;
但它不起作用,代码也变得很长。
答案 0 :(得分:0)
我制作一个你想要的20个字段的名字数组,然后为每个项目构建一个这些字段的数组,方法是在while循环中传递给Pods::field()
的那些字段名称。像这样:
$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>
端点,以接受要作为请求正文返回的字段列表。不会很难做到,如果你让它工作,请务必提交拉动请求。