2017-03-14 14 views
0

私は次のWordpressコードを持っています。その結果、プロパティのリストが表示されます。フィルタWordpressデータの配列

$args = array('posts_per_page' => 5, 'post_type'=> 'property'); 

    $myposts = get_posts($args); 

    foreach ($myposts as $property_data): 

     $meta = get_post_meta($property_data->ID); 

     $vdo_url = wp_get_attachment_url($meta[fave_video_image][0]); 
     $images = wp_get_attachment_url($meta[fave_property_images][0]); 
     $city = wp_get_post_terms($property_data->ID, 'property_city'); 
     $type = wp_get_post_terms($property_data->ID, 'property_type'); 
     $status1 = wp_get_post_terms($property_data->ID, 'property_status'); 

     ?> 
       <tr> 
        <td class="date"> 
         <h5><input type="checkbox" class="propcheckbox" id="property" name="filedata[]" value="<?php echo $property_data->ID; ?>"> <?php echo $property_data->post_title; ?></h5> 
        </td> 
        <td class="hidden-xs hidden-sm"> 
         <?php echo get_the_post_thumbnail($property_data->ID); ?> 
        </td> 
        <td> 
         <h5><?php echo $city[0]->name; ?></h5> 
        </td> 
        <td class="text-center"> 
         <h5><?php echo $type[0]->name; ?></h5> 
        </td> 
        <td class="text-center"> 
         <h5><?php echo $status1[0]->name ?></h5> 
        </td> 
        <td> 
         <h5><?php echo $property_data->post_date; ?></h5> 
        </td> 
       </tr> 

    <?php endforeach; 

ここで、property_statusが "verkauft"でないプロパティのみを表示します。 property_statusはwp_termsテーブルにあります。

追加/変更する必要はありますか?

答えて

1

あなたはクエリーレベルでそれを行うことができます。

$args = array( 
'posts_per_page' => 5, 
'post_type'=> 'property', 
'tax_query' => array(
    array(
     'taxonomy' => 'property_status', 
     'field' => 'slug', 
     'terms' => array('verkauft'), 
     'operator' => 'NOT IN' 
    ), 
), 
); 

$myposts = get_posts($args); 
... 

これはあなたのすべてを取得する必要がありますそのステータスを持たないプロパティあなたはそれをテストし、それが正しいかどうかを見ることができます。

タクソノミのクエリについては、こちらをご覧ください。https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

0

最も簡単なオプションは、条件が満たされた場合、PHPでフィルタリングして、出力をスキップするようになります:

foreach ($myposts as $property_data): 
    //get the status 1st 
    $status1 = wp_get_post_terms($property_data->ID, 'property_status'); 
    //if the status matches, skip the rest of this loop iteration 
    if($status1=='verkauft') continue; 

    $meta = get_post_meta($property_data->ID); 

    //the rest of your code