2017-07-28 6 views
0

私はWordpressでWoocommerceを使用したプロジェクトに取り組んでいます。私は特定のカテゴリのすべての製品を得ようとし、それらを配列に保存してから、それらで私のことをします。しかし、ループが動作してすべてのアイテムを出力しても、配列にデータをプッシュすると、最後のものだけが保持されます。あなたが見ることができるように最後の項目だけがループを介して配列プッシュで保持されます

$args = array('post_type' => 'product', 'posts_per_page' => 100, 'product_cat' => 'additional-number'); 
$loop = new WP_Query($args); 

echo '<select class="form-control">'; 
echo '<option>Select a country</option>'; 
while ($loop->have_posts()) : $loop->the_post(); 
    global $product; 
    $countries = array(); 
    $countries[] = $product->id; 
    echo '<option value="' . $product->id . '">' . $product->post->post_title . '</option>'; 
endwhile; 
echo '</select>'; 
wp_reset_query(); 
print_r($countries); 

、私が構築する選択は、このいずれかになります。

<select class="form-control"> 
    <option>Select a country</option> 
    <option value="7818">England</option> 
    <option value="7814">Germany</option> 
</select> 

しかしprint_rの出力は、このいずれかになります。

Array 
(
    [0] =&gt; 7814 
) 

私がやっているものをすべてのアイデア違う?

答えて

3

$ countries = array();を追加してください。あなたが各反復で新しい、空の配列を作成するように、前にループ

<?php 
$args = array('post_type' => 'product', 'posts_per_page' => 100, 'product_cat' => 'additional-number'); 
$loop = new WP_Query($args); 
$countries = array(); 
echo '<select class="form-control">'; 
echo '<option>Select a country</option>'; 
while ($loop->have_posts()) : $loop->the_post(); 
    global $product; 
    $countries[] = $product->id; 
    echo '<option value="' . $product->id . '">' . $product->post->post_title . '</option>'; 
endwhile; 
echo '</select>'; 
wp_reset_query(); 
print_r($countries); 
?> 
+0

私はエラーを探して一時間過ごしたとは思わないし、それを見ませんでした。ありがとう。期限が過ぎるとあなたの答えを受け入れるでしょう – Tasos

+0

ようこそ!ハッピーに助けてください:) –

2

しているときは、内部ループあなたの配列変数を初期化しています。

$countries = array(); 

whileループに属します。

+0

私は他の答えにもコメントしました。しかし、私はあなたに感謝したいと思います。私はあなたの答えをupvotedしかし、それは数秒で速かったし、それを無視する権利ではないので、私は最高のものとして他のものを選択します。 – Tasos

関連する問題