我有一个自定义帖子类型“locations”,带有自定义字段“State”、“City”、“Address”和“Phone”。
我想在有组织的列表中查询这些字段。假设我有以下三个帖子:
城市:洛杉矶;州:加利福尼亚州;地址:123 Main St。;电话:888-111-2222
城市:圣何塞;州:加利福尼亚州;地址:55 1st St。;电话:888-333-4444
城市:布鲁克林;州:纽约;地址:9 25街。;电话:888-555-4848
应显示如下:
加利福尼亚州洛杉矶市123大街888-111-2222号到目前为止,我正在使用此代码获取列表中的状态,它正在工作:
<ul>
<?php
global $wpdb;
$query = "SELECT meta_value, COUNT(post_id) as count FROM $wpdb->postmeta WHERE meta_key = \'state\' GROUP BY meta_value ORDER BY meta_value;";
$states = $wpdb->get_results( $query );
foreach( $states as $state ) :
echo\'<li>\'; echo $state->meta_value; echo \'</li>\';
endforeach;
?>
</ul>
但这当然只是显示:
加利福尼亚州纽约我想弄清楚的是如何查询我要查找的其余数据。
提前感谢!
SO网友:Benoti
一个小示例,基于get\\u posts和get\\u post\\u meta。
$locations = get_posts(
array(\'post_type\'=> \'locations\',
\'posts_per_page\'=> -1,
\'post_status\' => \'publish\'
);
echo \'<ul>\';
foreach($locations as $location){
$location_city = get_post_meta($location->ID, \'city\', true);
$location_state = get_post_meta($location->ID, \'state\', true);
$location_address = get_post_meta($location->ID, \'address\', true);
echo \'<li>\'.$location_city;
echo \'<li>\'.$location_state.\'</li>\';
echo \'<li>\'.$location_address.\'</li>\';
echo \'</li>\';
}
echo \'</ul>\';
您需要将get\\u posts中的$args数组调整为按特殊值排序。通过这种方式,您可以循环浏览帖子,并使用get\\u post\\u meta检索它们的自定义字段。
编辑:您可以在查询的参数中添加meta\\u查询数组,以获取或排序。Custom field in WP_Query
希望有帮助。