回显来自自定义字段的帖子数据的分层列表

时间:2016-10-28 作者:Alvin

我有一个自定义帖子类型“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>
但这当然只是显示:

加利福尼亚州纽约我想弄清楚的是如何查询我要查找的其余数据。

提前感谢!

2 个回复
最合适的回答,由SO网友:Alvin 整理而成
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

希望有帮助。