0

私はいくつかの問題と奇妙な結果をもたらすループを含むこのコードを持っています。この特定の投稿タイプには、配列に配置したいくつかのカスタム フィールドがあります。すべてが期待どおりに機能しますが、フィールドに値がない場合は、ループ内の前の投稿から値が取得されます。

WordPress に次のような投稿があるとします。

Post ID 10
custom_1 = 10
custom_2 = 20
custom_3 = 30

Post ID 20
custom_1 = 40
custom_2 = null
custom_3 = null

ループを実行すると、これらの結果が得られます

Post ID 10
custom_1 = 10
custom_2 = 20
custom_3 = 30

Post ID 20
custom_1 = 40
custom_2 = 20 (instead of null)
custom_3 = 30 (instead of null)

そのループの短いバージョンは次のとおりです。

$query = new WP_Query($query_arg);
if ($query->have_posts()) {
while ($query->have_posts()) {
    $query->the_post();
    $result[] = array(  
    "custom_1" => get_post_meta($post->ID, 'custom_1', true),
    "custom_2" => get_post_meta($post->ID, 'custom_2', true),
    "custom_3" => get_post_meta($post->ID, 'custom_3', true)
        );
      }
}
wp_reset_postdata();

私はこれについて頭を包むことができないようです..ほとんどすべてを試しましたが、何もうまくいきません。

ここで何が起こっているか知っている人はいますか?

更新: ループをこれに変更して修正しました。

$query = new WP_Query($query_arg);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();

//set vars to "" which 'resets' the value with every new post in the loop
$custom_1 = "";
$custom_2 = "";
$custom_3 = "";

//set vars to the value of the custom fields
$custom_1 => get_post_meta($post->ID, 'custom_1', true);
$custom_2 => get_post_meta($post->ID, 'custom_2', true);
$custom_3 => get_post_meta($post->ID, 'custom_3', true);

$result[] = array( 
"custom_1" => $custom_1,
"custom_2" => $custom_2,
"custom_3" => $custom_3
    );
  }
}
wp_reset_postdata();
4

1 に答える 1

0

MYSQL がnullを処理する方法が原因である可能性があります。Null は値がないことを意味するため、データベースにスペースがなく、空のスペースもありません。ただし、空の文字列はデータベースに表示されます。

以下を試してください

Post ID 10
custom_1 = 10
custom_2 = 20
custom_3 = 30

Post ID 20
custom_1 = 40
custom_2 = ""
custom_3 = ""
于 2013-08-20T10:42:12.837 に答える