我搜索了一会儿,但没有找到任何解决方案。我使用了这些函数listed here.它输出如下内容:
Array
(
[0] => 15
[1] => 30
[2] => 50
)
但我想要这样的东西:
Array
(
[post_id_1] => 15
[post_id_2] => 30
[post_id_3] => 50
)
这是函数中使用的$wp查询:
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = \'%s\'
AND p.post_status = \'%s\'
AND p.post_type = \'%s\'
", $key, $status, $type ) );
return $r;
}
最合适的回答,由SO网友:amit 整理而成
get_col()
函数只返回一列作为数组。要获得两列结果,我们可以使用get_results()
, 将返回一个对象数组
还可以使用foreach循环将其转换为所需的结构。
Example -
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_results( $wpdb->prepare( "
SELECT p.ID, pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = \'%s\'
AND p.post_status = \'%s\'
AND p.post_type = \'%s\'
", $key, $status, $type ));
foreach ( $r as $my_r )
$metas[$my_r->ID] = $my_r->meta_value;
return $metas;
}
(示例的修改版本)