如何从所有帖子中获取元值

时间:2012-09-06 作者:jepser

我搜索了一会儿,但没有找到任何解决方案。我使用了这些函数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;
}

2 个回复
最合适的回答,由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;
}
(示例的修改版本)

SO网友:John Henrique

WordPress具有此功能get_metadata 这将获取对象的所有元(Post、term、user…)

仅使用

get_metadata( \'post\', 15 );

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post