0

我有以下代码用于将我的一个 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;

但它不起作用,而且代码变得很长。

4

1 回答 1

0

我将创建一个包含您想要的 20 个字段的名称的数组,然后为每个项目构建一个包含这些字段的数组,方法是对传递给Pods::field()while 循环内部的那些字段名称进行 foreach。像这样:

    $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>的端点,以接受作为请求正文返回的字段列表。做起来不难,如果你成功了,一定要提交一个拉取请求。

于 2014-09-22T20:47:34.377 回答