Custom field totals

时间:2014-03-23 作者:Fid

我试着到处搜索这个,虽然有一些关于将总数添加到前端的讨论,但关于管理方面没有任何内容。

我有一个自定义的帖子类型,它有帖子,这些帖子的一个字段是价格。我想了解状态(全部、已发布、概念…)显示该字段的相关总和。就像状态显示perentheses中的帖子总数一样。

有什么聪明的方法可以做到这一点吗?

2 个回复
SO网友:passatgt

从特定的帖子类型中获取所有帖子ID,遍历它们,只需将自定义字段添加到一起,并在编辑时显示帖子类型标题下方的总和。php(注意add\\u filter first参数,您需要将产品部分更改为您的post类型名称)

add_filter(\'views_edit-products\',\'products_price_sum\');
function products_price_sum($views) {

    $args = array(
        \'post_type\' => \'products\',
        \'posts_per_page\' => -1,
        \'post_status\' => \'any\',
        \'fields\' => \'ids\'
    );
    $postslist = get_posts( $args );
    $sum_total = 0;

    foreach ($postslist as $post) {
        $price = get_post_meta( $post, \'price\', true );
        $sum_total = $sum_total+$price;
    }

    //This is the sum of the price field
    $views[\'price_sum\'] = \'<strong>Price Sum:</strong> \'.$sum_total;

    return $views;

}           

SO网友:Fid

以下是根据单击的状态或分类法更改的最终版本。

未来的读者需要改变:

custom_post_name - 自定义帖子的slug名称

custom_taxonomy_name - 如果你有,否则只需“分类法”

_custom_field_id - 要汇总的字段的元id

使用自定义分类名称的原因是,我有一个包含价格的列和一个包含“类别”的列。当你点击一个状态时,你会看到该状态下所有自定义帖子的价格,但我想根据“类别”进一步过滤价格。当您单击它时,它只显示那些特定的帖子,并且只显示对该自定义分类法的总价格更改。

谢谢大家的帮助!

foreach( array( \'custom_post_name\' ) as $hook )
add_filter( "views_edit-$hook",\'products_price_sum_dpf\');
function products_price_sum_dpf($views) {
$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) ); 
$slug = $term->slug;

if ($_GET[\'post_status\'] != NULL) { 
    $args = array(
        \'post_type\' => \'custom_post_name\',
        \'posts_per_page\' => -1,
        \'post_status\' => $_GET[\'post_status\'],
        \'fields\' => \'ids\',
        \'custom_taxonomy_name\' => $slug
);
} else {
    $args = array(
        \'post_type\' => \'custom_post_name\',
        \'posts_per_page\' => -1,
        \'post_status\' => \'test\',
        \'custom_taxonomy_name\' => $slug,
        \'fields\' => \'ids\'   
    );
};  


$postslist = get_posts( $args );
$sum_total = 0;

foreach ($postslist as $post) {
    $price = get_post_meta( $post, \'_custom_field_id\', true );
    $sum_total = $sum_total+$price;
}

//This is the sum of the price 
if ($_GET[\'post_status\'] == NULL && $slug == NULL) {
    echo \'\';
} else {
$views[\'price_sum\'] = \'<strong style="color:#ff0000">Total: \'.$sum_total.\'</strong>\';
}
return $views;

}           

结束

相关推荐