Php 自定义post元数据总和
这应该非常简单 我有一个自定义的post类型:“装运”,带有一个自定义字段“装运成本” 我想计算所有货物的总成本 我已通过一篇帖子成功地将其输出到正确的数量:Php 自定义post元数据总和,php,wordpress,Php,Wordpress,这应该非常简单 我有一个自定义的post类型:“装运”,带有一个自定义字段“装运成本” 我想计算所有货物的总成本 我已通过一篇帖子成功地将其输出到正确的数量: $totalcost = 0; $post_ids = [2583]; foreach( $post_ids as $post_id ) { $totalcost += (int) get_post_meta( $post_id, 'shipment_cost', true ); } echo $totalcost; 但当我尝
$totalcost = 0;
$post_ids = [2583];
foreach( $post_ids as $post_id )
{
$totalcost += (int) get_post_meta( $post_id, 'shipment_cost', true );
}
echo $totalcost;
但当我尝试在一个数组中使用所有装运的CPT时,结果是零
$shipments = array(
'post_type' => 'shipment'
);
$totalcost = 0;
$post_ids = $shipments;
foreach( $post_ids as $post_id )
{
$totalcost += (int) get_post_meta( $post_id, 'shipment_cost', true );
}
echo $totalcost;
我的出货量数组是错的,还是我只是用了错误的方法
谢谢 现在您似乎正在使用
$shippings
,因为它是一个post ID数组?您首先需要检索所有帖子ID:
$shipments = get_posts(array(
'post_type' => 'shipment',
'post_status' => 'publish'
));
由于上述内容将返回post对象,因此需要修改循环:
foreach ($shipments as $post) {
$totalcost += (int) get_post_meta($post->ID, 'shipment_cost', true);
}
更好更快的方法可能是使用原始数据库查询来获取所有元值的总和:
$totalcost = $wpdb->get_col("SELECT SUM(pm.meta_value) FROM {$wpdb->postmeta} pm
INNER JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = 'shipment_cost'
AND p.post_status = 'publish'
AND p.post_type = 'shipment'");
这救了我的命!!我们一直在寻找一种解决方案,来解决Pods自定义帖子类型的总输入问题,该类型有一个用户可以输入数字的自定义字段。然后,我将代码包装在一个短代码中,以便在前端显示
function jobs_shortcode () {
$jobs = get_posts(array(
'post_type' => 'pledged_job',
'post_status' => 'publish'
));
$total = 0;
$post_ids = $jobs;
foreach ($jobs as $post) {
$total += (int) get_post_meta($post->ID, 'jobs_pledged', true);
}
echo $total;
}
add_shortcode( 'jobs', 'jobs_shortcode' );
谢谢大家! 谢谢!我使用了wp查询路线,它工作得很好。出于好奇,为什么在这种情况下原始查询更好?我对查询SQL非常陌生,并且已经准备好,通常使用wp查询比使用原始SQL查询更好。干杯很高兴它解决了你的问题。我的意思是,最好使用一个查询,而不是对每个帖子都提出请求。啊,好的,太好了。谢谢