我有以下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不是&#34; verkauft&#34;的属性。 property_status位于wp_terms表中。
我需要添加/更改什么?
答案 0 :(得分: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
答案 1 :(得分: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