0

ポッドの 1 つのすべてのアイテムを json にエクスポートするための次のコードがあります。問題は、json ファイルの 130 列すべてが必要なわけではなく、約 20 列だけであるということです。これは約 150 項目に対して行われるため、すべてのフィールドを出力しないことでロード時間を節約できると思っていましたが、実行します。これを行う方法がわかりません。たとえば、ポッド内のすべてのアイテムの「タイトル」という名前の列の値のみを出力したいとします。私のコードは以下に添付されています。

<?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

Pods::field()必要な 20 個のフィールドの名前の配列を作成し、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 に答える