如何从所有自定义帖子元数据中求和

时间:2012-01-07 作者:Sagive

我有一个metabox,每个客户每月都有预算
该元框位于称为客户端的自定义帖子类型中。在该元数据库中,唯一输入的是数字。

我想得到所有客户的总数<有什么想法吗?

虽然我认为这是纯php。。以某种方式使用foreach-应@Fahd Murtaza的请求,我正在尝试添加我的metabox的部分。。。我正在使用炼金术作为基础来创建我的元盒,因此会添加一些部分。。希望这不会让人更加困惑。。

<?php
// structure of my metabox usign alchemy
$clients = new WPAlchemy_MetaBox(array
(
    \'id\' => \'_project_description\',
    \'title\' => __(\'Client Info Card\', \'sagive\'),
    \'template\' => get_stylesheet_directory() . \'/metaboxes/clients-meta.php\',
    \'types\' => array(\'portfolio\'),
    \'context\' => \'normal\',
    \'priority\' => \'high\',
    \'autosave\' => TRUE

));

// call for budget section in my meta box
<p>
<label><?php _e(\'Clients Budget:\', \'sagive\'); ?></label>
    <?php $mb->the_field(\'client_budget\'); ?>
    <input type="text" name="<?php $metabox->the_name(\'client_budget\'); ?>" value="<?php $metabox->the_value(\'client_budget\'); ?>"/>
</p>  

其余的代码太长了,我认为与显示无关。。。如果我错了,请纠正我,并通过粘贴纸或明喻添加它。。

.
THIS IS HOW I QUERY THE POSTS...

<?php 
    query_posts(array( 
        \'post_type\' => \'portfolio\',
        \'showposts\' => 10 
    ) );                    
    $count_posts_portfolio = wp_count_posts( \'portfolio\' )->publish;
?>

2 个回复
最合适的回答,由SO网友:kaiser 整理而成

假设您有一个名为$posts 包含某个查询中的所有帖子(或更简单的帖子ID)。

然后您可以使用$result 处理你需要的一切。调用post数据很容易,因为关键是post ID。

// For other arguments look into @link http://codex.wordpress.org/Class_Reference/WP_Query
$posts = new WP_Query( 
     \'post_type\' => \'portfolio\'
    ,\'post_status\' => \'publish\'
);

foreach ( $posts as $post )
{
    $result[ $post->ID ][\'post_data\'] = $post->ID;
    $result[ $post->ID ][\'meta_data\'] = get_post_custom( $post->ID );
}

foreach( $result as $id => $data )
{
    // Do whatever you need to do with your meta data in here.
    print \'The title is: \'.$post->post_title;

    // See your post data:
    print_r( $data[\'post_data\'] );

    // See your meta data:
    print_r( $data[\'meta_data\'] );
}

SO网友:mor7ifer

$args = array(
    \'numberposts\' => -1,  // all the posts
    \'post_type\'   => \'clients\'
);
$clients = get_posts( $args );

$total = 0;
foreach( $clients as $client ) {
    $single = get_post_meta( $client->ID, \'metakey_name_here\', true );
    $total += $single;
}
$total 现在应该包含所有客户端的总数。metakey_name_here 不管是什么$metabox->the_name( \'client_budget\' ) 是的,我想这是在其他地方设置的,但我从来没有在WP\\U炼金术课上工作过,所以我不能肯定地告诉你。如果您需要比get_posts() 报价,WP_Query 就是我要找的地方。此外,以下是有关get_post_meta() 如果你需要的话。

结束